fix `for/flvector', etc. unsafety

Closes PR 13675

Merge to v5.3.4
New Racket version 5.3.4.1.
Change doc/.gitignore to make git aware of files with non-generated contents.
Add missing responsible.
Fix old pointers to COPYING.txt that should go to COPYING_LESSER.txt.
Distribute all COPYING*.txt files.
remove the code duplication in opt/c

The code duplication was there only to support
constructing the name for the optimized contract;
instead we actually just built the name as we go
(the old version actually built the old contract
 and then used that to get the name)

also:
 - racket/contract/base now requires basic-opters.rkt
   so all of the opters are registered when racket/contract/base
   is loaded, not just the non-basic ones
 - fix the ordering of the names of subcontracts in or/c
 - make opt-contracts print a more meaningful name
add #:error-name argument to opt/c

this makes it easier to stick opt/c implicitly into
various other contract using forms
fix various compiler warnings

Resort to gcc annotations in some cases, but avoid disabling whole
classes of warnings.
doc clarification
fix `raco setup -j' for a non-places build

When places are not enabled, then `raco setup' uses multiple
Racket processes that commuincate via pipes. Don't try to send
a place channel over a pipe.

Merge to v5.3.4
Correct typo.
adjust mzlib contract test suite for fixed or/c names
fix opt/c for -> contracts when the function accepts keyword arguments
add something that tracks the size of .zo files over time
(this is for our benefit via drdr)
add forgotten piece to the opt/c -> fix
plai/{gc2/}mutator: doc fixes

A symptom of mismatched `for-label' imports was that searching for "<="
would show red-underlined links to the `plai/{gc2/}mutator' documentation.

Merge to v5.3.4
new environment-variable API

The `current-environment-variables' parameter determines the current
mutable "environment variable set". If that set is the initial one for
a Racket process, then using the set corresponds to working with OS
environment variables.  Otherwise, it's really just a hash table that
is packaged up as OS environment variables if a subprocess is created.

The new environment-variable interface works in terms of bytes, instead
of assuming that environment variable names and values fit in a string
encoding.

The string-based `getenv' and `putenv' are still available as
convenience wrappers. The checking on environment-variable names
for those wrappers is a little tighter, preventing any attempt to use a
name that contains "=".
racket/sandbox: add sandbox-make-environment-variables

By default, a sandbox gets a fresh environment variable set,
which means that it does not affect environment variables
outside the sandbox (which means that sandboxed code cannot
set the Racket process's OS-level environment variables).

Closes PR 13667
fix `dump-memory-stats' output

PTIdPTR use was wrong.