Added support for executors

This pull request replaces the current Node.h with a larger interface which includes executors, groups, timers, and some other common utilities which are required to implement the `ros1_like` examples in https://github.com/ros2/examples/pull/1.
I think maybe spin should be virtual, but since I never stored either the STE or the MTE as the base class I never noticed. I think the base class makes sense so that the different executors can be stored and used in place of each other. There is some asymmetry currently, but I think we can fix that.