improve any/c's random generation

by using the environment sometimes and making up (simple) functions
sometimes
fix contract test suite responsibilities
Make cset-meet take more than two arguments.
Add cgen/inv and use it.
Remove duplicate case in infer.
add `raco pkg catalog-archive`

The `catalog-archive` command not only copies a catalog, but also copies
all package sources referenced by the catalog to create a snapshot that
doesn't depend on any external pieces.

One reason you might want to do that is to download all packages on a
machine with general network access, and then building packages on a
(virtual) machine whose network access is limited.

This commit also adds support for relative package sources in the
catalog protocol, where a client converts a relative package source to
an absolute one.  Since the relative-to-absolute conversion happens on
clients, relative sources will be of limited use until v6.0 and v6.0.1
become deprecated.

A new `current-pkg-lookup-version` parameter corrects the misuse of
`current-pkg-scope-version` for package-catalog queries.
v6.0.1 installers info
v6.0.1 announcement
Fix contract.

First bug caught with new test.  Thanks Robby!
add plumbers, remove `custodian-tidy-all`

In v6.0.1.7, I tried to give a port-flushing job to custodians. They
turned out to be unqualified, so let's try employing specialists.

Thanks to Eli for pointing out the problem with the v6.0.1.7 design:
attaching callbacks to custodians allows a sandboxed task to escape
through the custodian hierarchy. Plumbers avoid this problem by
having no hierarchy.
racket/sandbox: plumber

A sandbox needs it own plumber so that sandboxed code cannot attach an
arbitrary callback to the plumber outside the sandbox. The plumber
outside the sandbox gets a flush callback that tells (within the
sandbox thread) the new plumber to flush.
drracket: plumber for user process

The exit handler in the user process flushes via the plumber,
but maybe DrRacket could do more with the user's plumber, such as
attempting to exit instead of always forcing the old user process to
terinate when the "Run" button is clicked.
scribble: discard partial output on exception

This change avoids the problem of a bad "index.html" on a doucment
rendering error, where the presense of an "index.html" would count
as successes on a retry.
change DrRacket doc to not attempt to render a control character
distro-build: fix catalog relative paths

The old use of relative paths was unusual and fragile.
Proper relative paths are now supported, so generate paths
consistent with that.
protect against errors in chunking or gunziping... without this there can be hangs
changing valid char to XML 1.1 rather than 1.0 and reverting changes from recent PR
adjust keybindings doc to be more informative, but
also never use unprintable characters
file/gzip: compensate for too-far lookahead
racket/sandbox: fix guard on attempt to flush sandbox plumber