Add file metadata to AG blocks, so we can verify that a block's data is
from the right version of the right file, and is the right version of
the block data.  In doing so, make it so the AG can cache serialized and
signed blocks and manifests instead of re-generating them on the fly.
This commit also fixes some memory leaks and error-path bugs in the UG's
read method.
MS: set the "need_cert" flag when the gateway is created.
Use as many HTTP server threads as there are active cores. Don't just
use 1.
ENOMEM check when allocating a cache block.
Better method documentation on how libsyndicate's HTTP server can
generate responses.
Better debug output if we try to free a download that is still
processing.
Fix a memory leak in open()
Don't bother re-obtaining publish information in the CURL driver when we
fetch a block.  The AG shouldn't evict the cached data until it is time
to reversion.
Make it so the AG can cache serialized manifests.  Build the API on top
of the block cache implementation.
Don't reversion on reload. Otherwise, we'll reversion everything once
per hour.  WIP: figure out a better way of doing this.