pool: 'back' decoder

Implement the chunk decoder framework, with a decoder for the
top-level 'back' chunks.  Write a small main program that opens a
default pool and lists the backups contained in it.
Chunk: Cleaner getter names

Rename the getters for the 'oid' and the 'kind' to just 'oid()' and
'kind()'.  The field that stores these get an underscore after the
name (per Google style guide).
chunk: Convert ChunkPtr to unique_ptr

Change most internal references to chunks to Chunk& references, and
have the various factories (read, and the test generator) return
unique pointers.
pool: Fix UUID generator's random source

The default random UUID generator in boost seems to be based on using
ininitialized data in the Mersenne Twister.  Aside from being
unreliable, this also throws a bunch of warnings in valgrind.

Fix by using the 'random_device' generator, which gets the random data
from /dev/urandom on Linux.  This should be a much better source for
random uuids.
chunk: Avoid leaks when deleting Chunks

Add a virtual destructor to Chunk so that the subclasses are properly
cleaned up when deleted.
Test chunk null pointer properly

The managed pointers should be tested for presence using the operator
bool method.
chunk: Simulate const accessors

Several methods of Chunk perform an expensive
compression/decompression operation, and therefore modify the internal
state of the Chunk.  However, this operation is idempotent, and the
class behaves as if the operations were constant.

This is similar to the way values are updated in lanauges with lazy
evaluation.  The values themselves are immutable, but the results are
cached.

Implement this, by declaring the accessors as const methods.  When
updating the cache internally, use a const_cast to poke under the hood
and update the cached values.
Update Chunk uses for const

Now that chunks can be largely used when marked as const, add const
declarations to things that don't need to modify them.
chunk: Make deletion of copy explicit

Write a small test to verify that move works.  Also verify that the
copy constructor is forbidden, but this has to be uncommented since it
will cause a compilation error.