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
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 "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"