cache: cache buffer stream

stream::cache provides an [[io::stream]] implementation which provides
a cache stream. This stream read from the provided source, into a provided
read buffer, and never free space. It can be copied over to store its internal
position.

This streams is designed for algorithms that needs to read from [[io::handle]]
multiple times, by example for automata machines.
