Add blocks read/write interface to chunk data

Abstracts away how the byte stream is stored in the file.

It chunks the byte stream into parts, allowing compression
etc without the rest of the project needing to know.