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 changed the name to `wait_for_work` because it really only gets called when wait will be called: f77e6d7d5655d4944e78d9d4359398be743f6a45

I also changed the way `spin_node_some` works and therefore needed to add a `remove_node` function and I also fixed up the `add_node` to make better checks and to interrupt wait when nodes are added/removed.