Support generic streams, not just Buffer

@purplefox can you review this ?
Maybe we require the user to specify one when creating the read stream, instead of having a default value ?