WIP: Merge goal programming mixin
There are two possible ways to do goal programming:
- current way: the evaluation of the epsilon variables is used to create hard constraints;
- new way: the epsilon are kept as variables throughout the goal programming. The switching between the two possibilities can be done via the options 'keep_eps_variable'. The default is set to False, which implies that the current goal programming option is chosen.
If 'keep_eps_variable' is set to True, one can use the further option 'linear_obj_eps'. This ensures that any objective function throughout the optimization problem is linear. This option is useful, e.g., to use solvers that can handle linear objective and quadratic constrained programming, but not quadratic objective and quadratic constrained programming.