Allow indent text to be passed in

Instead of forcing single space indenting allow
the indenting string to be passed in so that others
can provided their favorite indent (tabs, two spaces
or other...)

Change-Id: I2dfb3baeaecb8bed197429b591daed69eb8cc834
Finish factoring apart the graph_action module

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
Add docstring describing the inject instance variable

Change-Id: I00c48fc6a5f579fe72badc034fbd293f2eb41d5c
Add docs related to the new conductor feature

Change-Id: I68722a5b6bea0e404427ec7b121e7c6f90e42145
Merge "Finish factoring apart the graph_action module"
Merge "Allow indent text to be passed in"
Merge "Add docs related to the new conductor feature"
Allow for two ways to find a flow detail in a job for a conductor

Previously we had the code looking at the first logbook entry and
running with that. That doesn't work so well especially since the
logbook may be unordered. So we then switched to require a job
to provide a 'flow_uuid' key to determine which one to run. This
makes sense and avoids the problem of being unable to determine
which one to run but makes it harder to use for those that have just
logbooks with single entries (likely the common case).

So add in a slightly more advanced finding logic that will check for
existence of 'flow_uuid' and if found use it, otherwise if not found
then check if the logbook is only a single item and if so use that
instead (and otherwise abort).

Change-Id: Id1e11e8b4e48af3389e5c4e0818777ff9abf9463
Merge "Add docstring describing the inject instance variable"
Merge "Allow for two ways to find a flow detail in a job for a conductor"