Fix contract profiler path shortening.

Was not preserving list order while shortening.
cleanup for size
Fixing PR14478
Increase timeout.
fix generator for or/c
add generator for any/c and improve generator for or/c

also improve test cases a little bit and minor Rackety
fix mzlib contract tests for or/c stronger improvements
unbreak or/c opter

(the missing require meant that the wrong "or/c" was being registered in the table)
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.