Continue work on decorator usage.

Remove the need for wrappers.py now that there is an advanced
decorator provided that can provide all the same features as
the functor wrapper task class. This new decorator is now used
in the tests instead of the previous usage of the functor task
class.
Update how the version task functor attribute is found
Allow for passing in the metadata when creating a task detail entry.
Bring over the nova get_wrapped_function helper and use it.

When searching for args, if the function does not have a '__wrapped__'
attribute, then try to use a more aggressive way of finding the underlying
function that nova provides. Likely this should move to oslo so we don't
have to copy it.
We were not notifying when errors occured so fix that.

Previously we seemed to have forgotten to notify the listener
when a task errored and allowed said listeners to get the reason
why the task failed so fix that and allow for the exception to
be returned back on result fetching and rethrown.
Allow for optional task requirements.
Update how graph results are fetched when they are optional.
Ensure we have an exception and capture the exc_info.
Add a .gitreview file so that git-review works.

Change-Id: Id0f112372ea89b6e9b9731d55b49817f59a6bc73
Fix tests for python 2.6

Since python 2.6 is supported in openstack we need to
alter the format messages and the usage of functions
that exist in the 2.7 unittest by including unittest2
and using that instead.

Change-Id: I31c78d1f771603a6ad15ada50507cada0c5e331b
Add .settings and .venv into .gitignore

Change-Id: I02255b9cea996dc88df607a34ee5f0b1f38a33cb
Add the ability to soft_reset a workflow.

In cases where it is not desired to reset the whole state
of the workflow, but only to soft_reset it so that it can
be easily resumed from a interrupted state (for example).
This change allows for that to happen, which involves also
keeping track of the last task that ran so when resumed via
soft_reset that task can be the one started off from (instead
of starting from the start of all tasks).

Change-Id: I034bd6af6445e3da52356328605368319c4ff6f9
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
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
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
Add a start of a few simple examples.

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

Change-Id: I1700d9602519975729e1909dc9be29efa4d2fa32