Read streams.

To be determined whether this would be better designed as an Iterator.
It would complicate memory management of transfers, and I don't see
major use cases.

Also TBD: should it allocate a new ~[u8] for each transfer and pass
ownership to the callback?