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.
Slightly OT, but I recently learned a [very compact](http://www.cplusplus.com/reference/map/map/count/) way to check whether a map contains a key-value pair. Performance-wise it's the same, but it's much less verbose.

```c++
if (plugins_.count(name) == 0)
{
  // Key not found
}
else
{
  // Key found. Count == 1, as map is a unique associative container
}
```