Add an Executor to run flows without a Job

This is based on #914 The goal here is to make it easy to take a function that produces a TypedPipe, and to run that.

Next, we should have a methods that write `TypedPipe[T]` or `ValuePipe[T]` to the temp directory, then reads that in the Future to get a `Iterable[T]` or `T` respectively.

With the above, you can easily write jobs that loop that does some ML algorithm, for instance.
I think if you do a type parameter C and pass it to the return type, it will just get filled in with Nothing and then erased. This should work fine, no?