Fix type error reporting for case-> with * domains

In the case that a case-> type included a case with a *
domain and had additional branches, a use of `apply` with
that type would fail to report a type error. This was
because the type of the applied list was ignored for type
error generation.

Closes PR 13893
Simplify + improve unicode testing code.

When the file is not found, use (current-load-relative-directory)
instead of having it end up in the working directory.
Simplify decoding code into one `cond'.

(It's likely to get written in some better way, for example, avoid the
extra work for simple strings.)
Get rid of the `#:function' keyword.

These problems are always dealt with via an internal function instead of
making the name argument part of the visible API.
Remove unnecessary line.
Indentation fix.
raco setup: just core "racket" for initial sequential build
Clean up site configuration module docs and defaults

As a result, `make installers' produces an installer with no further
configuration on a non-Windows platform, even without `git'.
Further explain silent acceptance of unencoded characters.

Also highlight the two tests that use that.
Fix some INSTALL.txt typos
snapshot management: add "current" link
move configuration-file info from "INSTALL.txt" to "pkgs/distro-build"
fix GC bug in FFI

A foreign procedure's data could get GCed before the procedure
was called, if the procedure is not otherwise reachable.

(Bug found by running tests in GC-stress mode.)
fix an FFI test case
fix GC bug

This is a variant of the bug fixed in
49fbca5b1830bc4bddb8522d7647518227a32dd0,
where a GC-notification callback still
could cause problems in a GC during a finalization
callback.

(Bug found by running tests in GC-stress mode.)