Buffered pipes

Attempt to generalize the “feeder” part of a Channel: an object which can be read from and closed, but is reading from a buffer fed by another thread. The read operations are blocking and can have a timeout set.