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.
These seem to never be freed. We could have the map values be shared pointers / unique pointers maybe?