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.
The bounds is correct. Since I delete the nonlinear constraints already, so the constraint left out are
```
x1>=0
0<x1+2*x3<=10
x1+3*x3=0
```
In `NonlinearProgram`, we formulate our problem as
```
min objective(x)
s.t    cin_lb <= cin(x) <= cin_ub
        ceq(x) = 0
       Ain*x<=bin
       Aeq*x = beq
       x_lb <= x <= x_ub
```
So in this test, it is transcribed to
```
-inf<-x1-2*x3<=0 (linear inequality constraint)
-inf<x1+2*x3<=10 (linear inequality constraint)
0<=x1+3*x3<=0 (linear equality constraint)
x1>=0 (bounding box constraint)
```
What `obj.bounds` returns is `lb=[-inf;cin_lb;zeros(num_equality_nonlinear_constraint,1);-inf(num_inequality_linear_constraint,1);beq]` and `ub=[inf;cin_ub;zeros(num_equality_nonlinear_constraint,1);bin;beq]'. The first entry for `lb` and `ub` are for the objective functions, so they are infinity