pkg/dirs-catalog added

This utility that is needed by `make` turns out to be useful in other
scripts.
remove the "racket-pkgs" directory layer

The layer is now redundant, since everything left in "pkgs" is in the
"racket-pkgs" category.
fix handling of "links.rktd" errors
add makefile step to adjust for movements within "pkgs"

The step doesn't currently adapt to additionals or removals
from "pkgs", so further support may be needed in the future.
get-pkg-context: add `#:use-cache?` and `#:quiet?` arguments
doc clarification on `beg0` bytecode form

From Gustavo, and intended to be part of commit
2d95c39051.
pkg info.rkt: refine specification of `distribution-preference`
raco pkg: add trash directory for removed/updated package installations

Packages that are installed as other than a link are not meant to be
edited, but work can get lost if a package is edited and then removed
or updated. Avoid that work loss by moving removed or updated packages
to a trash folder.

By default, the trash folder holds up to 512 packages for up to 48
hours. To disable the trash folder (for a given scope), use

 raco pkg config --set max-trash-packages 0

(I expect that some variant of Greenspun's rule predicted the eventual
inclusion of "backup" management in the package system.)
fix thread-based place implementation

There are some limitations to the places implementation when
`(place-enabled?)` returns #f, but mostly it can work.
Add test props for racket/generic tests
ffi/unsafe/custodian: doc clarifications
pkg/path: fix `pkg-info` contract in docs
reference: fix docs for octal character literal

Bug reported by Emmanuel Schanzer
fix problem with truncated value printing and stack overflow

A value-printing truncation discovered after a stack-overflow handle
and return could go badly, because the truncation escape wasn't
reset correctly after overflow handling (in contrast to truncation
discovered during the overflow handling, which was handled correctly).

Closes PR 14870
pkg/path: fix problems with `path->pkg` and case or nonexistent

The `path->pkg` funciton shouldn't return the name of a package that
isn't installed, including a case-folded version of a package that is
installed. On Windows, where we match case-normalized paths, we have
to work a little harder to map a case-normalized path element to the
installed package name, given that package names are case-sensitive.

Closes PR 14861
raco pkg: less noisy about consulting local catalogs

The "Resolving..." status reports are meant mainly to indicate when
network access is happening. Don't print in advance when a local
catalog is being used, but do print when a local catalog provided the
answer.
Reduce the number of tests on OSX.

Initial work by me and fixes by @samth.
add #:name argument to {transplant,relocate}-{input,output}-port
Create the "racket-extra-test" to reduce dependencies.

It initially contains the two tests that use redex-driven random
testing.
Run the non-default configs tests only with gcc.