Why not make Stream into a mixin function rather than what you're doing here?
Then, to use it, rather than doing `Foo.prototype = new Stream()`, you could do `stream(Foo)` and it'll mix stuff in to `Foo.prototype`?