Allow KinematicBase to have RobotModel passed in to save loading time

This allows some IK solvers, including the default KDL solver in MoveIt!, to load much faster by passing in a pre-loaded robot model instead of loading and parsing one from the parameter server each time an IK solver is initialized. This is important because multiple IK solvers are loaded, typically one for each planning group and again for each MoveIt! node. This does not currently improve loading time of IKFast solvers, however, because those robot models must be converted to Collada format and parsed by openrave. 

Changes:
- Passes a pointer to a RobotModel, or a Null pointer for backwards compatibility. 
- Deprecated initialize() function that does not use RobotModel
- Added ``getParentModelPtr()`` to joint model group
- Added ``boost::enable_shared_from_this`` to allow the shared pointer to be recieved by objects that only have its raw pointer

Additionally, KinematicsBase is now forward declaring RobotState and RobotModel, so @isucan suggested:
> To resolve cyclic dependency between libs, we should probably put everything in moveit_core into one lib.

I have not done this yet, but am thinking I could create a new library ``moveit_core`` that includes ``moveit_robot_model``, ``moveit_robot_state``, and ``moveit_kinematics_base``. Thoughts? It still currently compiles without this last change though.
Kinematic plugins are loaded within the RobotModel constructor, so it is impossible to use a RobotModel smart pointer. I instead have to use ``enable_shared_from_this`` to get the smart pointer later. This feature was very tricky to implement.