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.
Refactor UncompressBlockContents to return a BlockContents to use return-value-optimizations
Refactor DecompressBlock to take advantage of return value optimizations
Refactor ReadAndDecompress* to use return value optimizations
Refactor ReadBlockContents to use return value optimizations
Refactor ReadMetaBlock
Implement a simple BlockContents constructor
Add a const char* BlockContents constructor
Drop BlockContents::heap_allocated finally
fix tests
rename for sensibility
Drop use of DecompressBlock
missing delete[]
Drop ReadAndDecompress* and a whole bunch of no-longer-needed complexity
drop useless const from allocation
Drop another sketchy looking delete_contents_after_use
Now we can release our memory
Unify code paths in ReadBlockContents with move semantics. All leaks plugged.
Add some sensible defaults to BlockContents()
rebase++