Fix parsing when CNAME is provided for MX query

The code was assuming that the record type was
MX even though this could be false. Also adjusted
some code to also make it easier to test.

Note: the behavior when MX records are missing
is probably still not right.

Closes PR 13654
Fix `imap-list-child-mailboxes` to match contract

Closes PR 13658
Fix old style contracts
racket/gui cocoa: fix `list-box%' visble-cell calculations

There were especially problems with header columns, but
also intercell spacing was not taken into account.

Merge to v5.3.4
pkg/lib: clean up names and package-scope parameter

More consistent exported names and parameters that better match the
three scope choices (installation, user, or shared) --- cleaning up
after myself.
pkg/lib: lock clean-up, and add `path->pkg'

Make the installed-package database lock reentrant, change some
functions to take the lock, and fix the documentation on when a
lock is expected to be taken outside of functions.
ffi/com: repairs for parameterized-property setting and for date values

Merge to v5.3.4
DrRacket: treat installed packages like "collects" directories

... for the purpose of "populate 'compiled' directories".
DrRacket: disable "compiled/drracket" during skipped-file load

If DrRacket decides to skip a file for "populate compiled",
then there may exist a file in "compiled/drracket", anyway,
or there may be such a file for some depenency of the skipped
file. Before this patch, that situation was considered to be a
broken installation, and things would go bad in the likely
case that the "compiled/drracket" files were out of date.

To avoid that problem, parameterize `used-compiled-file-paths'
to drop the DrRacket "populate compiled" target while loading
the skipped file.

This change sets up a more selective "populate compiled" where
a package's modules might switch between eligible and
ineligible for compilation by DrRacket.
remove accidentally added files
DrRacket: if any file in package X is open, treat X as "in development"

... for the purpose of "populate 'compiled' directories" --- but only if
the user has write permission for the package directory.

This change may or may not be a good idea. The idea is that installed
packages generally should be treated in the same way as the main
"collects" tree (e.g., avoiding debugging instrumentation), but if you
happen to be developing a package, then you want it treated like things
that are not in the main "collects" tree. So, how do you pick? Maybe
opening a file in the package is a good way to pick.
raco pkg remove: only setup needed collections

That is, limit the ending `raco setup' to the same collections
as the corresponding `raco pkg install' (droppping collections
that no longer exist afterward, of course).
Adding pkgs/all
Adding pkgs-all
add File|New, File|Open... and File|Open Recent menu items to the
bug report form window

related to PR 13698
fix case-> to not abuse procedure-chaperone

closes PR 13697
adjust case-> so that the blame context information includes
which case of the case-> happened
remove debugging `log-error'
raco setup: protect against bad info-domain cache
raco setup: --tidy mode (as needed by `raco pkg remove') and more

When a collection disappears, then documentation and metadata
cross-references need fixing up based on everything that remains
available, even though other setup actions are confined to
collections that are specifically relevant to the packages. The
new `--tidy' mode takes care of that.

Package installation now also provides `--avoid-main' when working
with packages in a scope other than installation scope, and `raco
setup' now better respects `--avoid-main' to avoid creating
executables or re-running documentation.

Also, revise the `raco' documentation to better orient it toward the
package manager.