Separate InteractionHandler from RobotInteraction

This splits the InteractionHandler class into its own files separate from RobotInteraction.

There are also some additional comments and moving some members from protected to private.

This is a first step in an attempt to simplify RobotInteraction and fix some threading issues that I have been causing me trouble.