Drain readable returned by task into pipe

If a task returns a Readable stream, pipe it into a Writable sink that
consumes it. Drain legacy readable streams by registering a ‘data’ handler.
Tweak end-of-stream configuration

end-of-stream was previously reporting completion if a Writable or
Readable completion event was received. Be more discerning: if it’s a
Readable stream, require Readable completion. If it’s not Readable but
is Writable, require Writable completion.
Merge branch 'pipe_drain' of https://github.com/aroneous/orchestrator into pipe_drain