Started on new circular buffer abstraction.
Renamed circular[-_]buffer to buffer.
Implemented buffer mostly in terms of istream.

- It turns out there is nothing in the standard to block or detect that a call
will block. This means we -must- use select or poll. If we -must- go that far,
meh, back to stream_i.