Merge pull request #51 from jhu-lcsr-forks/master

Adding cmake install targets
More uniform hardware_interface API. Refs  #45.
Unit test hardware_interfaces.
Add virtual destructor, protected internals.

- ResourceManager inherits from HardwareInterface, which has virtual methods,
  so a virtual destructor is required.

- Internal members are protected instead of private.
Add RobotHW class test.
Make error message more explicit in test.

Output with ROS_ERROR_STREAM instead of std::cout
Warn when replacing a handle/interface.

It is legitimate to change the underlying data associated to a handle/interface
name, but it might also be a common programming error. Having the logs reflect
this situation would allow to spot it easily.
Validate raw data wrapped by hardware interfaces.

- Refs #47 and #52.

- Initialize raw data pointers to 0 in default handle constructors, otherwise
  they evaluate to nonzero and there is no way to distinguish an uninitialized
  state (ie. dangling pointers) from a properly initialized one.

- For non-empty handle constructors, validate input raw data, throw if invalid
  pointers are found.

- Add assertions on handle accessors. Invalid reads will trigger the assertions
  instead of causing a segfault (in debug mode).

- Update unit tests.
Add missing include statement.
Separate resource manager in two classes.

- Refs #45.

- HardwareInterface specifics (ie. resource claiming) has been factored out.
  We now have the non-polymorphic ResourceManager class for registering and
  getting handles, and the polymorphic HardwareResourceManager that
  additionally implements the HardwareInterface and takes care of resource
  claiming.

- The above change is required if the transmission interface is to leverage
  the resource management code, but without the hardware interface specifics.

- Move files back to the internal folder. They are building blocks of the
  public API of hardware interfaces, but should not be directly #included
  by end users, so it's best they don't share the same location as
  user-facing headers.

- Update unit tests.
Leverage ResourceManager in TransmissionInterface.

- Refs #45 and #48.

- Leverage hardware_interface::internal::ResourceManager to implement
  TransmissionInterface more compactly and consistently.

- Update unit tests.
Merge branch 'master' into hardware_interface_rework

Conflicts:
	hardware_interface/CMakeLists.txt
Restore stack-level files needed by rosbuild.
Merge pull request #54 from pal-robotics/hardware_interface_rework

Hardware interface rework
Fix build order dependency.
Python install for controller_manager.
Install tune_pid.py under catkin.
Install channelecho.py under catkin.
Merge pull request #55 from ahendrix/master

Minor catkinization fixes for python scripts.
Fixing comment in pid source code