Replace naked calls to operator new and delete (Fixes #222)

This replaces a mishmash of pointers in the Block and BlockContents classes with
std::unique_ptr. It also changes the semantics of BlockContents to be limited to
use as a constructor parameter for Block objects, as it owns any block buffers
handed to it.
Remove compression_type
Remove cachable_
use ~Block() = default
Simplify second construtor
format++