Use the runner interface as the best task lookup.

Instead of having to examine tasks for requires
or provides or optional properties/attributes, have
the runner class do this instead and then have the
flows which use the runner class just access the known
to exist attributes directly.

Change-Id: I2db4ce5296bdbd50e882f5940572a4c513e73d20
Unify creation/usage of uuids.

Instead of using the name it is likely better to
give the flows a uuid and use that for tracking
purposes rather than using the flow name (which
maybe duplicated). Also unify the usage of the
job tracking id -> uuid as well as adjust the
visibility of said uuids (to be read-only).

Change-Id: I592800bd9e08e3a7bde33ff250a454588324f052
Move to using pbr.

The new way to build packages and perform setuptools
interactions seems to be via the pbr library so to
play well with others, use said library.

Change-Id: I519503fdf59457dc554870b8e6ff61613ab30d11
Add helper reset internals function.

Use a little helper function to reset
the internal state of the flow when needed
instead of duplicating code that does this.

Change-Id: I51d83538a2920c7d387ffd1756e8d99413f4077e
Merge "Move to using pbr."
Merge "Unify creation/usage of uuids."
Merge "Use the runner interface as the best task lookup."
Allow graph dependencies to be manually provided.

Instead of always automatically finding dependencies
of tasks it would be nice to allow developers to manually
provide them if they want to. Adjust how dependencies are
located due to this alteration + a few test cases for it.

Change-Id: I61027be7c458cd26b163ca58e703dc413735396c