Generalized input and output types for streams
Add demo for Stream::open