add plugin interface for collision detectors

This is a potential solution to #532. Highlights:

 * Given the way the allocator stuff works (templated and CRTP), I chose not to wrap the CollisionRobot/World classes, but rather to create a new class that has an initialize() method in which one calls setActiveCollisionDetector() and does any other setup related to the collision detector.
 * Parameter for the name of the collision plugin is held in "collision_detector", and I implemented a parameter search. In addition, if the parameter is not found, we check for "move_group/collision_detector", mainly so that the RVIZ plugin can use the collision detector.

@isucan please review and give feedback.
This header could be in moveit_core -- I don't think you want the loader stuff in there though since it uses pluginlib. I'm fine with putting the header in moveit_core, as that is how the kinematics and planning_request_adapter stuff is done, just let me know and I can update the PR tomorrow morning.