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
add route::ErrorFilter
commit missing fixture
update docs index
fix nodemon when the node executable is located at a path containing spaces
seed tests: start services if needed
minor
disable nodemon.execShell instead of double-quoting stuff
fix race condition in file-server

Previously, multiple requests for the same .gen module could
cause the second request to delete the loaded module before
the first request had a chance to use it, causing a 500 error.
allow server::Route to take a functional matcher argument
teach docbrowser about app and api files
serve up redacted versions of api files for Code and Executable FormatMaps
relax test for api content access
be more explicit about encoding when reading strings from a nodejs stream