Use pipes in CombinedReadable

This makes it simpler to manage backpressure.