Update constraint

Now we can delete and update the constraint in `NonlinearProgram`. Each `Constraint` object has a unique ID in the program. The user can delete or update the constraint using that ID.
They throw errors for different reasons. `isNonlinearConstraintID` throws an error if the input is not an integer scaler, for example, if the input is [5.5;1], then it will throw the error, because the input format is incorrect. But `isNonlinearConstraintID` will not throw the error if the input is an integer, but not a valid ID. For example, all the valid IDs are negative integers, so if we call obj.isNonlinearConstraintID(1), it would not throw an error, but return false. Then `deleteNonlinearConstraint` should throw the error, because the user asks the program to delete a non-existing constraint.

I can change the name `flag` in the `isNonlinearConstraint` to avoid confusion