Add a tree type

A tree module will be very useful for tracking tree
structures in taskflow. So to encourage development and
usage of such structures add a type module and helper
classes that can be used perform tree operations on
tree structures.

Change-Id: I63c0653d051aeb4d1ea8a55f0e25fc25ff9e37f1
Remove check_doc.py and use doc8

Instead of using a helper script that is internal to taskflow
use the doc8 package (which was created based on the check_doc.py
work) instead. This avoids repeating duplicated code when a
stackforge/external pypi package can provide the same
functionality.

Change-Id: Ie5a43f96b20e34f3955657ad2ef8beba05a4300e
Simplify identity transition handling for tasks and retries

TaskAction.change_state and RetryAction.change_state should just work
for any transition. We still ignore real identity transitions -- those
which don't change state, result and progress of the atom -- in order
order to avoid unnecessary notifications.

Change-Id: Ib5cbc4c04abbd23f4204b2b6145c0fedd2fd811b
Create a top level time type

Create a time module under types and place
the stop watch class and timeout classes there
so that we can have a single location where
generic types that do things with time can be
located.

Part of blueprint top-level-types

Change-Id: I8eb7e897c0354b20a7fa0d061434006e775d5e94
Use `flow_uuid` and `flow_name` from storage

Instead of fetching these attributes from the flow
or flow detail objects before notifying just use the
same attributes provided from storage which is the
best source of these two attributes.

Change-Id: I383e152758f177de2aac87425790ee1a82c3ca6b
Make the expiring cache a top level cache type

Create a cache module type and adjust a few of its
methods to be more pythonic and then switch out the
work_based engines usage of it and adjust its tests
methods with adjusted methods using the new cache
types functionality.

Part of blueprint top-level-types

Change-Id: I75c4b7db6dd989ef328e9e14d4b00266b1c97a9f
Fix the section name in CONTRIBUTING.rst

The name of the section "If you're developer, start here"
has changed in the wiki, now is "If you're a developer".
This commit updates it to correctly refer to the
proper section.

Change-Id: I6e84c6ce670680ae1146f4ba5ff529bc6f8d72ab
Merge "Make the expiring cache a top level cache type"
Merge "Add a tree type"
Merge "Create a top level time type"
Move the stopwatch tests to test_types

Since the stopwatch is a type in the time
module we should move the test for it from
utils test to the test that is used to test
all the various types.

Change-Id: Id462baaada2784bf2af1da9c8548a2393c1af7fb
Raise NotImplementedError instead of NotImplemented

Change-Id: I6ba5e21c801f724f216298d383a523f7dd865d6a
Make the examples documentation more relevant

Instead of just linking to the examples source tree
provide a list of recommended examples (in order of
my perceived complexity) that can help new comers
view examples in a more organized and relevant manner.

Change-Id: I9f6d15fb042e3fe67fd29a9c331fc779c254241c
Merge "Fix the section name in CONTRIBUTING.rst"
Merge "Simplify identity transition handling for tasks and retries"
Merge "Raise NotImplementedError instead of NotImplemented"
Merge "Move the stopwatch tests to test_types"
Merge "Use `flow_uuid` and `flow_name` from storage"
Merge "Make the examples documentation more relevant"
Remove pbr as a runtime dependency

The pbr package is only a build time
dependency and as such should not be
in the requirements.txt requirements
file.

Change-Id: I5ee90767850c2caa4534f69b967f6dce6eca0de1