Cleanup nonlinear program

1. Move All contents of `NonlinearProgramWConstraintObjects` to `NonlinearProgram`
2. Add support for IPOPT in `NonlinearProgram`. The procedure to install IPOPT is described in https://groups.csail.mit.edu/locomotion/private/robowiki/index.php?title=IPOPT. This pull request should be merged after we have a working Makefile in ipopt-pod
3. Move the `infeasibleConstraint` from `InverseKinematics` to `NonlinearProgram`