Integrate better locking and a runner helper class.

Ensure that when a linear flow or derivatives is running
that it can not be modified by another thread at the same
time it is running by putting a lock around sensitive functions.

Also instead of using the raw task objects themselves
integrate a helper 'runner' class that provides useful
functionality that occurs before its tasks runs as well
as member variables that are associated with the contained
task.

This helper class currently provides the following:

- A uuid that can be returned to callers of the add
  method to identify there task (and later its results),
  allowing for multiple of the same tasks to be added.
- Automatic extraction of the needed required and optional
  inputs for the contained task.

Change-Id: Ib01939a4726155a629e4b4703656b9067868d8f3
Store results by add() uuid instead of in array format.

Instead of storing the results in the previous linear
format, just store the results indexed by the uuid
returned from the add() method instead. This allows
for easier access to individual task result as well
as makes it easier to support non-linear result
insertation.

Change-Id: Id7461cb74eb1a380b05cf23643e7120df5682224
Add helper to do notification

Instead of embedding the notification calls into the
ordered flow object provide a better util helper class that
can be used to accomplish the notification registration
and activation.

Change-Id: Ia4d21cb126e8ac12c227a5c0aca467d96daa3987
Make connection/validation of tasks be after they are added.

Instead of having validation be immediate when tasks are added
to the linear flow, follow the same paradigm as the graph_flow
where only upon connection (or determination of the order) will
tasks be connected/validated.

Change-Id: Ia8275ec88b0229f0793819249ae59fad0a2e9935
Clear out before connecting.

Since the node set may have been altered since the
last connect we want to make sure clear out the
edges and the providers of items before connecting.

Change-Id: I73e6b3bc5d83a82d2b13dbb6b06c66e794d66e9c
Move how resuming is done to be disconnected from jobs/flows.

Instead of having resuming tied to a job allow a workflow to
have a resumption strategy object that will split its initial
work order into 2 segments. One that has finished previously
and one that has not finished previously. Refactor the code that
previously tied a single resumption strategy to the job class
and move it to a more generic resumption module folder.

Change-Id: I8709cd6cb7a9deecefe8d2927be517a00acb422d
Pass runners instead of task objects/uuids.

Runners contain tasks and provide the identifying
characteristics for the tasks, pass these along to
the underlying components instead of tasks.

Change-Id: I795a52d3a218e508c38ea209d757750ae6a936ea
Ensure we document and complete correct removal.

Change-Id: I156a7d53c3640f6be64532a5c6b74f71ed651d14
Merge "Ensure we document and complete correct removal."
Merge "Clear out before connecting."