storage: docs & rewrite streams.

`ReadableStream` and `BufferStream` implement stream.Readable, and I created a `WritableStream`, which works similar to Readable, but obviously in reverse :)

This also includes elongated documentation.
The reason we didn't provide a WriteableStream is it takes 1-2 secs to fetch a new access token when the conn is not already authorised. During that time reader keep pushing data, ends up us buffering gigabytes in the memory.

How does this work if you read from a gigabyte file and doesn't have an access token initially?