FFI docs: fix some missing links
net/git-checkout: support "dumb" protocol for discovery

Supporting just reference discovery can be useful for certain
testing configurations.
raco pkg {install,update}: add `--clone <dir>` mode

Using `--clone <dir>` with a Git-based package source causes the
package installation to be linked to a clone of the repository
as a subdirectory of <dir>. The package can be developed locally
in the usual way with Git tools, but `raco pkg update` can itself
pull updates to the package/repository.

See the new chapter 6 in "Package Management in Racket" for
more information.
raco pkg {install,update}: track Git repo source from a catalog

When a package is installed via a catalog, and the source provided
by the catalog is a Git repostory, then allow `--clone` to use
that repository when just the package name is given.
net/git-checkout: finish support for "dumb" HTTP(S)

Full dumb-server support is even more useful for testing.
raco pkg {install,update}: help users keep repo clones consistent

When packages A and B have the same Git repository source, and
when at least one of them is linked as a repository clone, then
the package system doesn't require A and B to both be linked or
both be linked to the same clone... but that can lead to confusion
for users. The package manager now detects this situation and in
many situations can update non-clones to make then clone links
at the same repository.
add `setup/materialize-user-docs` and related `raco setup` flags

The new library provides a way to force a user-specific documentation
etry point into existence. Normally, that would happen when a package
with documentation is installed in user scope. After the entry point
exists, then it sticks around even if all user-scope packages are
removed. In some cases, it may be useful to force the entry point into
existence as if packages had been installed and removed.

(This might be useful for avoiding a quarantine on installed
documentation files on Mac OS X, or a trampoline might be better.)
adjust text:ports to better deal with giant amounts of bytes

by splitting them up and using separate events so other work
can also happen while the insertion is going on.

This change also changes the queue-callback for IO insertion
to be a low-priority callback. This should have been the case
before, I think, but it is a bit surprising it wasn't and so
this may also cause other problems

closes PR 14851
make <menukey>-k (kill program) clear pending io

related to PR 14851

When sending a giant bytes via write-bytes, we can get into a situation
where there are lots and lots of bytes inside the port that haven't yet
been put into the repl's text% but that will, eventually, even though
the program is dead. The commit clears out any such pending IO
use materialize-user-docs in drracket

closes PR 14844
clarify materialize-user-docs docs