Add inverse kinematics using updated optimizer interface

Add inverse kinematics for `BodyNode`. The main functionality is implemented to:
```
void BodyNode::fitWorldTransform(...);
void BodyNode::fitWorldLinearVel(...);
void BodyNode::fitWorldAngularVel(...)
```
The functions try to find optimal joint states to fit body node's transformation (or linear/angular velocity). Each function solves nonlinear optimization problem using `optimizer`.

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