Fixed issues with FacadeOperationPrimitive replacing itself with child tasks (fixes #42)

* FacadeOperationPrimitive replaced with FacadeOperation, it is no longer a task,
but rather an object that can be adapted into tasks, implemented via a new
TaskProviderInterface.
* TaskAdaptorInterface now requires an engine to adapt, this allows direct access
to the facade implementation, allowing for the implementation of FacadeOperation
mentioned above.