@mbj I am proceeding with this experiment just to see where it ends up. I understand the objection you raised in #rom-rb earlier today. I really like the constraints using a stream imposes though, and I'd like to see what direction it takes the design.

I also like that it provides an interface that is compatible with more libs. String, Array, StringIO, and IO all share this interface. And if we ever wanted to use a [Rope][rope] for the output, which provides a more efficient concatenation than a `String` when they are long, we can test it out more easily. Besides interop, there's just the familiarity of it.. it's common that to append to an object you do `object << string`.

[rope]: http://en.wikipedia.org/wiki/Rope_(data_structure)