Add a history retry object, makes retry histories easier to use

When a retry object is asked to make a decision about the atoms
it controls it is currently provided a complex object that contains
what has failed and why and what was provided to try to resolve this
failure as raw types. To make it easier to interact with that history
provide and use a more easier to interact with helper object that
provides useful functionality built ontop of the raw types.

Part of blueprint intuitive-retries

Change-Id: I93f86552f5a0c26b269319e4de6d9b8fb3b3b219
Remove default setting of 'mysql_traditional_mode'

The sqlalchemy versions we are using/supporting (0.6+)
have the detection of the mysql mode built-in so only
activate the connect setting if we are somehow overriden
by a user who knows what they are doing.

Fixes bug 1396278

Change-Id: If2226d3e9f921a1c5f62a6727016fe86cd50a9b5
Have the sphinx copyright date be dynamic

Instead of having the copyright date be statically
encoded to '2013-2014' have it be dynamically picked
up from the datetime module instead.

Change-Id: Ie8a4ab02b7b2c254eb63a0b43763c9893f7fa083
Properly handle and skip empty intermediary flows

Instead of linking nodes which have elements to
predecessors which do not we should search backwards
through the prior predecessors and link to one that
does have nodes; this ensures that we do not create
bad workflows when empty flows are injected.

Fixes bug 1392650

Change-Id: Ic362ef3400f9c77e60ed07b0097e3427b999d1cd
Use explict 'attr_dict' when adding provider->consumer edge

Instead of using the less explicit **kwarg support when adding
an edge between a explicit producer and consumer use the 'attr_dict'
keyword argument instead and use the constant defined the the flow
module as the key into that dictionary (this also ensure that the
key will be adjusted automatically if that key value ever changes).

Change-Id: Ieeae83b984b7797320997c0c4cb4289eb1a837ee
Cleanup some doc warnings/bad/broken links

This fixes some of the old links to classes that
have been moved, or split, fixes some of the sphinx
warnings that were being output and cleans up the
reference to deprecated properties.

Change-Id: Ib930c54bcdf15876093cbe5b6527a195b9594f40
Base task executor should provide 'wait_for_any'

Instead of having each task executor reproduce the same
code for 'wait_for_any' we can just have the base task
implementation provide the function that everyone is
replicating instead; making common code common and save
the headache caused by the same code being in multiple
places (which is bad for multiple reasons).

Change-Id: Icea4b7e3df605ab11b17c248d05acb3f9c02a1ca
Add a 'can_be_registered' method that checks before notifying

Add a new method that can be used to check if a event type is
allowed to trigger a notification; and initially use it to
disallow the 'ANY' meta event type from being used to trigger
notifications.

Change-Id: I842fcc5d3e06f69a9479b60b3b89a24233171cfb
Add a parallel table mutation example

A new simple example that is pretty easy to follow that does
a embarrassingly parallel computation on some input table to
create a new output table (by performing a multiplication on
each cell in that source table to create a new table).

Part of blueprint more-examples

Change-Id: I2684f39b3525ee2d43a03ab353d029fdc0e1b2a1
Add a basic map/reduce example to show how this can be done

Since we can create tasks, run them in a parallel then direct
there result into a result task we can create a workflow that
can define how this can be accomplished and have the map ops
run in parallel (with the reduction op happening after all the
map ops have finished).

Part of blueprint more-examples

Change-Id: I7c04f5508b35b945c49e5798ece0e298d2e1b979
Updated from global requirements

Change-Id: I9bbf5d9082e4e6ee9283c7e11ed0b2474a4e070a
Merge "Properly handle and skip empty intermediary flows"
Merge "Base task executor should provide 'wait_for_any'"
Merge "Have the sphinx copyright date be dynamic"
Merge "Cleanup some doc warnings/bad/broken links"
Merge "Remove default setting of 'mysql_traditional_mode'"
Merge "Add a history retry object, makes retry histories easier to use"
Merge "Use explict 'attr_dict' when adding provider->consumer edge"
Merge "Updated from global requirements"
Move over to using oslo.utils [reflection, uuidutils]

The reflection module is now part of oslo.utils so we should
remove our local version and use that version instead; this
also goes for the uuidutils module which is now part of
oslo.utils as well so we no longer need our local version
copied from the incubator...

Note that one reflection method `find_subclasses` which was to
specific to taskflow is now moved to the misc utility module
instead of its prior home in the reflection module.

Change-Id: I069881c80b0b2916cc0c414992b80171f7eeb79f