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