Allow access by index

Since a linear flow is a linear set of tasks or subflows
we can easily add in an accessor that can fetch these
items by index which is useful for indexing for any
post-add operations.

Change-Id: Ib1690584a08e24fae29285225e6c519b06ce2ddd
Bump requirements to the latest

Match the requirements for taskflow with
the openstack requirements (note the upstream
requirements are missing 'futures' and 'networkx')
and update the new hacking violations that were
detected due to the hacking requirement version
bump.

Change-Id: I8d1326cf2a8b1ea062f5e9aacd0c4f8261c6531a
Flow utils and adding comments

Make the graph duplicate node names be
a post flatten function and add a bunch
of mostly useful comments to the various
utils functions/modules.

Change-Id: Iea7afc2f1b6e96a87da0aa2ca83dfbe4b76ee2db
Update state sequence for failed flows

When flow failes, it now transitions to FAILURE state, and then
goes throgh REVERTING to REVERTED. So, flows that failed and were
reverted are now left in REVERTED state.

Change-Id: Ieb9135673847eb4942afa61696975d013b809819
Validate each flow state change

When engine changing state, the transition is now validated. This
helps to avoid complex and error prone checks in engine._change_state
and make validating code more reusable in different engines.

Change-Id: I2a06823c532926bb3bd034f7252b14bdbbc1fa1d
Implements: bp:transition-control
Merge "Flow utils and adding comments"
Merge "Update state sequence for failed flows"
Merge "Validate each flow state change"
Merge "Allow access by index"