Add the task to the accumulator before running.

Instead of only adding the task to the rollback
accumulator after it has ran it is useful to add
it to the accumulator before it runs so that if
said task fails while running it can get a chance
at undoing anything it might have done.

Change-Id: I5c9cf2fd194e3b42639d84a0d9dfed3a3b5a797d
Dinky change to trigger jenkins so I can cleanup.

Change-Id: I5ff975bb5ded48a84341efa4ebfdae4bf430ab60
Don't keep the state/version in the task name.

Instead of having individual entries for the task
that change with the state name + version, we should
instead just keep the same task name but update the metadata
about the states the task has gone through instead. Also
store the task version in the same metadata and warn users
when the versions may be incompat.

This makes it easier to see what a task has done
without having to know all the states it has gone
through (just to find the task details about that
task) as well as being able to detect version issues.

Change-Id: Ia6b9400394212230905341d205d966dfdee5dfdf
Merge "Don't keep the state/version in the task name."
Merge "Add the task to the accumulator before running."
Fix the current flake8 errors

The test pip ordering was resulting in the pep8 rules not really
running so this fixes that up and the resulting errors so we can
get a clean run.

Change-Id: Icc27be05cd513c4f04135c7e768007dbf9d07b10
Fix all flake8 E* and F* errors

This was mostly unused modules or local variables.

Change-Id: I39f9598ba8b64101a10f80bae448d27272abeddd
Fix most of the hacking rules

Hacking rules: H302, H303, H304, H401, H404

Change-Id: I38e62696724a99c5ebe74d95d477999bd91a2c9a
Update readme to point to links.

Change-Id: I1700d9602519975729e1909dc9be29efa4d2fa32
Add a start of a few simple examples.

Change-Id: I6abd1798de6f2a778f874b8fa928772b94e7b588
Merge "Update readme to point to links."
Allow instance methods to be wrapped and unwrapped correctly.

Change-Id: Ia29e0e8a54fa815dec88016a9444fe7cfad7b8ac
Merge "Allow instance methods to be wrapped and unwrapped correctly."
Move some of the ordered flow helper classes to utils.

Allow other flow types easier access to these helper
classes by moving them to the shared utils file.

Change-Id: I001754efc25b025e8070493d5861ffaedacafc7b
Cleaning up various components.

1. In order to aid future features its useful to split
split apart the linear_flow and have a good base
class that is not connected to a ordered or linear flow.
2. Have the graph flow inherit from the linear flow since
it is performing a linear run using a topological ordering
of the tasks.

Change-Id: I287cd4a666caf09ca3a4cdf1d53814e9c6feb765
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