Create and use a new compilation module

To allow compilation into an execution graph to be done via
other methods than our pattern flattening concept create a module
that defines what a compiler should do and what the expected return
type from compilation of a atom/flow is and how it will be used by
our existing engine types.

Part of blueprint plug-engine

Change-Id: I324172571f36a574195bcdeac71c6ec14cb11944
Rename t_storage to atom_storage

This name reflects better what the storage module is
actually being used for/does. The prior name was not
very informative and meaningful.

Part of blueprint plug-engine

Change-Id: I7015620f5536fc766cff3a877edd0e94d25db1ed
add the ability to inject arguments into tasks at task creation

Similar to the rebind functionality that lets you rename parameters
from those in the store, inject lets you inject arbitrary key/value
pairs that will be sent to your task at task creation time.  This allows
for flow and flow factories to reuse tasks with differing parameters
without jumping through a lot of hoops.

Change-Id: If167962811d22054b89d7d35a33d4ec5cb2cd648
Implements: blueprint wbe-workers-endpoints-constructors
Use a name property setter instead of a set_name method

Change-Id: I4a41204e16e636e12d649592ae909d45fdb33f9f
Factor out the on_failure to a mixin type

To allow for failures to be handled in different
ways extract out the on_failure definition of a
retry object to allow it to be its own mixin or
base class for resolvers that can only provide a
on_failure method.

Change-Id: Ief422bb57316b913897ca65496144edcfdd1a948
Merge "add the ability to inject arguments into tasks at task creation"
Merge "Create and use a new compilation module"
Merge "Rename t_storage to atom_storage"
Merge "Use a name property setter instead of a set_name method"
Merge "Factor out the on_failure to a mixin type"