add slack name to CompositeConstraint

1. Add 'cost' and 'slack_name' to CompositeConstraint.
2. Add a test case for CompositeConstraint in testNLPWConstraint
3. Add 'x_name' field to NonlinearProgramWConstraintObjects
If we have a `addSlackVariables` inside `CompositeConstraint`, I think it can cause ambiguity. Since if we construct the object using 
```
obj = CompositeConstraint(constraints);
```
 and then call
```
 obj = obj.addSlackVariables(n_slack,slack_name); 
```
and then add new constraints using
```
obj = obj.addConstraints(new_constraints)
```
Does that mean the constraints in the constructor needs those slack variables? If so, then the slack variable should be given in the constructor. If we mean those slack variables are used for the new constraints, then the old constraints in the constructor and the new constraints will use different input arguments, and that can cause trouble in `NonlinearProgramWConstraintObjects.addCompositeConstraint`