Add inverse kinematics using updated optimizer interface

Not fully implemented but includes basic functionality which is essential to pass Gazebo's unit tests:
- https://bitbucket.org/osrf/gazebo/issue/1011/dart-does-not-support-universal-joint
- https://bitbucket.org/osrf/gazebo/issue/1096/dart-screw-joint