adds additional methods / classes solely to improve the readability of the code

Equality constraint seems to be more general than fixing a variable to be constant. NonlinearConstraints could also be equality constraints, where lb=ub?