Factor out interface-management parts of RobotHW.

- RobotHW remains untouched.
Allow multiple hw interfaces, Fix #112, and test.

- Allow to specify multiple hardware interfaces for joints and actuators.

- Fix invalid xml_element tag. Contents are now stored as a string.

- Unit test parser.
Fix doc typo.
Add accessors to get transmission configuration.
Use static cast to convert from/to void pointers.
Add raw data accessors to actuators interface.

- Write access to the raw actuator data will be needed for automatic transmission
  loading.
Add class for holding transmission interfaces.

- Mirrors hardware_interface::RobotHW, but for transmissions.
First draft of transmission loading.

- Only simple transmission type currently supported.

- Can load forward map for act->jnt state and jnt->act pos,vel.eff commands.

- Partial testing.
Update loader test, better log statements.
Remove dead code.
Move common XML parsing code to TransmissionLoader

Mechanical reductions, offsets and roles are used by many transmission types.
The TransmissionLoader base class exposes convenience methods for parsing these
elements.
Add differential drive transmission parser.
Add four-bar-linkage transmission parser.
Test greceful error-out with unsupported features.
Log message change.
Fix bug when adding multiple transmissions.

- std::vectors were being used to store raw joint data, and when new transmissions
  were added, push_back()s would (potentially) reallocate the vectors and
  invalidate already stored pointers in hardware_interfaces. We now use std::map.

- Move plugin implementations to a separate library.

- Export link libraries to the outside.

- More complete tests.
Catkin fixes.
Remove unnecessary header dependencies.
Trivial test addition.
Use less pointers in transmission loader data.

- Only RobotHW and RobotTransmission instances are pointers as they are owned
  by the robot hardware abstraction. The rest are plain members whose lifetime
  is bound to the loader struct.