Factor out the scheduling, running and completion components
of graph_action so that we can allow this to be plugged in with
other types of scheduling, running and completion strategies.
The newly added components are the following:
- A runtime container class (serves as a holder of some small
utility functions) and all the other runtime components.
- A runner class that acts as the action engines run loop.
- A scheduler class that schedules nodes using a provided executor
and returns futures that can be used to introspect there results as
they complete.
- A completer class that completes nodes and futures that the
scheduler started, persisting there results and doing any further
post-execution analysis.
Part of blueprint plug-engine
Change-Id: I1dbf46654377fc34e9d90eeabf7b0062020bdc5e