Made following changes based on the code review
1. Constraint does not have x_lb or x_ub, instead I made a separate class BoundingBoxConstraint to impose the constraints on x directly.
2. No 'relation' property in Constraint
3. Find some bugs in the iGfun,jGvar computation in the previous code. Now I overload the objectiveAndNonlinearConstraints method