In IK, Truncate the posture from SNOPT to the range within the posture limit if SNOPT can find the solution. This eliminates the SNOPT numerical tolerance on the posture decision variables.
Merge pull request #46 from hongkai-dai/FixIKPostureBounds

IK posture truncation
Add Constraint class to be used for Drake solver. Currently Support NonlinearConstraint and LinearConstraint. Each constraint has bounds on decision variables and bounds on constraint eval function
Fix the documentation for geval that we support 'user_then_numerical'
LinearConstraint was in the wrong folder
add 'addNonlinearConstraint' to NonlinearProgramWConstraint, also overload its nonlinearConstraints method.
Add addLinearConstraint to NonlinearProgramWConstraint
NonlinearProgramWConstraint can solve the feasibility problem in both fmincon and snopt. I have not decided the form of the constraint yet.
NonlinearProgram can handle the objective function
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
Now all the linear inequality constraints in NonlinearProgram are unilateral
Ain*x <= bin
Now the nonlinear equality constraints is imposed with nonlinear_equality_constraint = 0
Disable setting nonlinear sparse gradient in NonlinearProgramWConstraint. Add more test case for 'addLinearInequalityConstraint' and 'addLinearInequalityConstraint' in NonlinearProgramWConstraint
Add a 'categoryString' function to the RigidBodyConstraint. Modify the test files to test such function
change the directory of the BoundingBoxConstraint
add a method 'checkGradient' for NonlinearConstraint to check if the numerical gradeint and the user gradient matches. Also check if the sparsity pattern of the gradient matrix is correct
1. Add 'generateConstraint' methods to SingleTimeKinematicConstraint, MultipleTimeKinematicConstraint,PostureConstraint and QuasiStaticConstraint
2. MultipleTimeKinematicConstraint do not accept 'q' as input to 'eval' function, instead it accepts a cell of kinsol.
All the changes here is in MATLAB. I will need to change the C++ counterpart later
SingleTimeLinearPostureConstraint and MultipleTimeLinearPostureConstraint have methods 'generateConstraint'
ContactWrenchConstraint have 'generateConstraint' method
add check for the 'generateConstraint' function in ContactWrenchConstraint