improve contract-stronger and related things

Specifically, add a mechanism so that contract combinators
can accumulate contracts on a value (instead just storing
only one) and then use that in instanceof/c to avoid
putting contracts on values more often.

Also, fill in better contract-stronger implementations in
some of the combinators
docs and tests related to a0880f740
Fix test failure in `archive` tests.
Those commits can change the blame assignment in
incorrect ways

This reverts commit 0aee13bf224960d5c7d93815170b9a20ed41d08f.
This reverts commit a0880f74037e1e3fe8d2f1d10f621428e6ad74dc.
fix bug in ->i expansion when the name ctc is used in certain ways
add a proper stronger implementation based for recursive-contract

Following _Subtyping Recursive Types_ by Roberto M. Amadio and Luca Cardelli
Synch German string constants with latest.
Comment out deinprogramm/image test cases with dubious semantics, that
have recently stopped working.
Fixes to FrTime dynamic value snips (for textual content, at least).

* Expect DrRacket to make a copy of the copy of the snip we give it.

* Add documentation explaining some of the trickiness involved in this code
  and how it might be possible to make it less brittle.

* Add a note about editor-snip% not behaving as expected when non-textual
  elements are inserted and subsequently removed (or the underlying
  editor object is replaced).
fix mzlib test for eaf48bbbf
improve contract-stronger for instanceof/c
chaperones: allow struct chaperones that supply no redirections

(as requested by Asumu)

A witness accessor or mutator is still required to create a structure
chaperone, but `#f` can be provided in place of a redirection, and
then impersonator properties can be attached to the chaperone.

At the same time, adjust `(chaperone-of? v1 v2)` so that `v1` as a
chaperone is not required to preserve non-redirecting chaperones of
`v2`.

The overall consequence is that a redirection procedure can cooperate
with a (suitably protected) impersonator property to override
redirection behavior without running afoul of the chaperone invariant
and without requiring O(N) space for O(N) overrides. For example, the
contract system can implement the re-application of a contract with
different blame information by overriding blame information as
represented by properties, instead of adding a new chaperone layer
every time that blame changes.

... and all the same for non-chaperone impersonators, of course.
chaperones: allow procedure chaperones that supplies no redirection

The same as the change for structure chaperones, but for procedures.
improve chaperone-procedure error messages a little
closes PR 14744 , Rackety
improve stronger for flat-named-contract

by making the equal, eq, and regexp contracts all have
an extra field to hold the name. This mostly has the advantage
that flat-named-contract has to turn a flat contract into it's
predicate a bit less often
improve contract-stronger for list-related contracts

also bring listof in line with the present
best practices of the contract library
fix a bug in f669c47c1
improve contract stronger for </c and >/c

and modernize those combinators, too
improve contract stronger for promise/c