improve caching of mapped directories

Mapped directory resources are now served with default
cache-control headers:

 - no-cache for resources without an etag (mainly generators,
   since we use mtime for static files)
 - must-revalidate for resources with an etag

These use the new response.setDefaultHeader, so they can
be overridden both before and after being set.

Etags from generator modules are now used as-is, rather than
being prefixed with the mtime of the module itself.
accept a `filter` function exported by a generator module, which acts like a request/route::Filter function on just that path
file-server: set `vary: accept-encoding` by default
make sure generator content is never cached when it has no etag
seed: cache bundle resources forever; move version.json into a simple .gen module