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
Allow instance methods to be wrapped and unwrapped correctly.

Change-Id: Ia29e0e8a54fa815dec88016a9444fe7cfad7b8ac
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
Added Generic Persistence API and Datatypes

Added a generic persistence API for JobBoards,
Jobs, LogBooks, Workflows, FlowDetails, Tasks,
and TaskDetails. The currently implemented
backends are in-memory and sqlite db (by use
of sqlalchemy). Also implemented generic return
types (listed above) for the generic API.

Change-Id: I05377d09b69ae1acd1f3d7e40ebee01e01c4c432