call-with-file-lock: fix port leak on error escape
add `file/cache`

In base, so it can be used by the package manager.
raco pkg: use a download cache

Downloaded files are keyed on the source URL and checksum, and the
cache is used only when a checksum is known.

The cache addresses two situations:

 * when installing many packages over an unreliable connection,
   the cache effectively lets a retry pick up where a previous
   attempt failed

 * when creating clean builds frequently, the downloads from a
   previous build can be reused (as long as the package's checksum
   does not change)

The cache location and limits are configurable, and they default to
a subdirectory in the user's add-ons directory (not version-specific),
1024 files, and 64 MB.

If a failure happens during staging (checksum and unpackaging) of a
package that has an entry in the cache, the entry is removed. The
file-cache library, meanwhile, implements a limit on the cache size
and defends against uncooperative filesystems.
raco pkg: repairs for SQLite-based catalogs
Fix props script sorting.
fix duplicate labels on main doc pages

Closes PR 14101
scribble/manual: add `#:escapes?` argument to `to-paragraph`, etc.

Use the new option to fix `codeblock`, which shouldn't have any
escapes.

Closes PR 14104
Get unnamed and named terms working with new env

Also separate 2set into separate typed module.
Add unnamed repeat support
Add vararg map/e and fix cons/e bug
Implement 1-level named repeats with named patterns inside.
Implement nested named repeats, remove mismatch name tests for now
Add redex dependency on typed racket
Remove dead code and reorganize a little
Use in-set now that it's typed
rackunit: make check-exn/check-not-exn raise error if given a non-thunk

Previously, (check-exn exn? 'foo) would pass even though 'foo is not a
thunk.  Now it raises an exn:fail:contract? exception.

Previously, (check-not-exn 'foo) would produce a check failure.  Now it
raises an exn:fail:contract? exception.
racket/gui gtk: make keyboard focus work in floating frames
raco expand & decompile: add `--columns` option
racket/gui cocoa: remove `warp-pointer` delay

Change suggested by Philipp Dikmann.
adjusted arg to raise-argument-error to produce sensible error msg