Make an Execution[T] type, which is a monad, which makes composing Jobs easy.

So, ExecutionContext was a first take on this, but the mutable FlowDef makes composition really tough. We are reusing a lot of what is going on with that, but the advantage to just calling Await on the future is that we only have one function to compose (run), not two (run and waitFor). Secondly, there is only one execution path so everything is testing that path. Not two separate paths (Promise/Future based and the synchronous version).