Remove #{id : Type} annotations from unit tests.

They don't work if the code is compiled and do if it isn't, which causes
interesting test case failures.
racket/class: shave a little time from `send`
racket/private/class-internal: protect ids private to class implementation
scriblib/figure: make figure hyperlinks show start of figure

... instead of putting the figure's caption at the top of the
browser window.

I can't decide whether I like the technique here, which is to use
JavaScript to move a figure caption's <a name=...> when the page is
loaded.  On the one hand, fixing up HTML via load-time JavaScript code
seems ugly compared to generating the right HTML in the first place.
On the other hand, it simplifies the generatation of a
backend-independent Scribble document (i.e., don't try to generate
different target locations for HTML and Latex), and HTML-specific
behavior seems properly handled at the HTML/JavaScript level.
Fuse loops in promote-demote.
optimizer: enable movement of constants that shouldn't be duplicated

Closes PR 14531
optimizer: more ad hoc `car` and `cdr` cases

Closes PR 14533
optimizer: ad hoc optimization of predicates applied to constructions

This is probably more of a job for Typed Racket, but maybe it's
useful to detect some obviously unnecessary allocations of lists, etc.

Closes PR 14532
Make tc-expr the same implementation as tc-expr/check.
Remove conditional tc-expr/check splits that no longer need to exist.
Remove tc-body, and 0 arg case in tc-body/check.
Remove tc/app/check.
Remove tc/lambda/check.
Improve filter simplification.

(T @ x) => (! S @ x) when their intersection is empty.
Rearrange how we look through filters in -and so this rule applies more.
Move tc-if merging results logic to tc-metafunctions for reuse.
Remove distinction between check and non check variant of check-subforms-unit.

Use new merge-tc-results as well.