Only distribute certificates for gateways that can write to the volume.
Read-only gateways don't matter, since they can't interact with the
other gateways anyway (at least, beyond the capacity that the CDN can).
Disable gratuitous debugging
WIP: Allow a reader to request only a list of file IDs.
Extra optional field in a listing to include just file IDs (if that's
all the reader needs)
Allow a URL path to have zero length in its path
WIP: optionally request file IDs only, instead of a full listing.
Move UG over to using libsyndicate/url, instead of UG/url.
Remove depricated UG cache in favor of libsyndicate/cache
Rename some internal methods and add extra braces in UG/consistency.cpp for
clarity.
Remove httpd_portnum config item; move it into syndicate-httpd
Add request timeout support.
* the gateway will retry requests after 55 seconds by default, since
Google AppEngine gives up at 60 seconds.
* the MS will send HTTP 503 on timeout, which the gateway will interpret
as -EAGAIN.
Update MS index to support queries over the set of gateways that need to
serve certificates.
Include MS-given request timeout hint in registration.
Add SYNDICATE_MAGIC to UG, where it belongs
Put syndicate-httpd opts into the header, where they belong.
Add the option to have the AG curl driver set its own modification time instead of asking
the upstream server.
Have the AG cache MS-given metadata between invocations
Have the AG look for a cached MS metadata listing on start-up, and use
both it and the specfile to figure out what needs to be downloaded.
Figure out the request type early
Have the AG properly generate a frontier set to explore when downloading
data from the MS.  This allows it to partially download MS metadata, if
some metadata is already cached.
Tolerate -EEXIST on directory create.  Move some publishing methods into
map-info.cpp, since they're more appropriate over there.  Misc. code
clean-up for clarity.