Support generic streams, not just Buffer

@purplefox can you review this ?
What's the reasoning behind an unbounded write queue? This will effectively switch off flow control, leading to possible OOM, which is the problem that WriteStream was intended to solve :)