Adds a single threaded flow conductor

Creates a new conductor module that can be used
to connect into the jobboard, engine, and persistence
mechanism.

This commit adds in support for a simple conductor
that will run jobs in its own thread and will dispatch
them, and consume/abandon them.

Implements: blueprint generic-flow-conductor

Change-Id: Ic610bc825506db57b0c4364b0fc588b51d453a76
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
Fix docstring list format

Change-Id: Ia79560e965e94e2e4ce18f4667c33ae577b327ed
Update sphinx pin from global requirements

Since I63c6159eb23430a181eb20016b35366c2fbbf9f8 got merge we have
to update sphinx version, too.

Change-Id: Ic25b361fd34ee7df7010bc60c1ff44d3b8892a6c
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 "Adds a single threaded flow conductor"
Merge "Fix docstring list format"
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"