pull RobotInteraction structures out of class

The Generic, EndEffector, and Joint structures complicate the core of
RobotInteraction.  Pull them out to simplify the code.  This will also
help with future plans to make the core of RobotInteraction more
generic and flexible.
robot_interaction: add KinematicOptions

KinematicOptions contains the parameters needed to call RobotState::setFromIK.

KinematicOptionsMap contains a map of string->KinematicOptions a default KinematicOptions.

These are useful in RobotInteraction with the group name as the key.
robot_interaction: use KinematicOptionsMap

Fixes threading issues.
Separate the handling of kinematics options into a separate object which
enforces thread safe access.
robot_interaction: add LockedRobotState and tests
robot_interaction: use LockedRobotState

Fix a number of thread safety violations.
robot_interaction: Fix issues raised by Ioan
add missing headers
remove extraneous code
robot_interaction: fix header problems

fix getRobotModel() bug
make internal functions private.
robot_interaction: fix setStateFromIK prototypes

use references instead of pointers.
robot_interaction: fix comment formatting

Limit lines to 120 chars max (80 preferred in headers).
robot_interaction: fix formatting

remove tabs and whitespace at the end of lines.
robot_interaction: add comments

Comment cryptic public function behavior.
Merge pull request #422 from acornacorn/acorn_fix_robot_interaction_fix2

Improve RobotInteraction thread safety