Don't propagate end_of_stream_exceptions through from read fails.

compressed_stream::read() guarantees that read requests are only sent
for existing blocks, so read fails are internal errors.
Introduce block header struct.

Change request interface to not send a block size to read.
Edit process_write_request a bit to make correctness clearer.
Edit process_read_request a bit for correctness.
Replicate block header at the end of a block.
Compressed stream read_back work in progress.
Add ut-compressed_stream backwards test.
WIP buffer state