racket/gui gtk: fix -singleInstance for paths that don't work as strings

Just in case a relative path turned into an absolute path doesn't
work as a string, add support for a bytes encoding.
fix a very very old bug in Redex uncovered by the new enumerator

The new test case in this commit shows the bad behavior;
the fix was to replace the regexp #rx".*[^0-9]([0-9]+)$"
with #rx"([0-9]+)$", ie make the regexp work properly in
the empty case (since regexps promise to find longest matches
anyway).

Also, Rackety
Add in let-poly bugs

also, misc clean ups of let-poly
adjust check function to properly deal with the store
adjust let-poly check functions so they count exns as failure,
but only for the bugs that are expected to show up that way
tweak run-muts to clarify args in help
adjust benchmark so that the 'check' functions are required to be
self-contained (and then don't call type-check anymore
from the benchmark scripts)

this fixes a problem in the let-poly models, since some
of the bugs there cause the type-checker to raise an error
add missing require
fix printout
smaller counter example for let-poly-4
fix let-poly's check function so it always terminates
Turn timing logging on unconditionally.
Respect `typechecker:called-in-tail-position` when calling non-thunks.
Use the form name from `match*/derived` to improve error messages.
Add annotations to 2dmatch to help typecheck.

Also use `match*/derived` to get the right error message name.
Add a test for 2dmatch + Typed Racket.
Fix typo in readtables documentation
Fix typos spotted by Ambrose Bonnaire-Sergeant.
Extend heaps to allow removing arbitrary elements via an additional equality operator.
Fix of PR 14413

Improved type per Ryans suggestion.