improve drracket's response to an unhappy aspell program

Specifically, two things:

 - make drracket more careful to not crash when aspell
   doesn't behave, and

 - have a more careful test when clicking the menu item
   (it now does a trial run of aspell instead of just
    looking for the binary)

closes PR 13242 (I realize there is still a feature
request mentioned in the audit trail of that PR, but
since the main problem is fixed, I'll consider that
to just be something separate)
Add typed version of collatz benchmark
Adjust benchmark test driver for TR
detect when tracing:reset doesn't need to happen and skip it
adjust the bluebox record-keeping code so that if there
is no bluebox information, then we can just bypass updating
it on insertions (especially important when loading a big
file into drracket, as there is a lot of insertion but no
blue boxes (yet))
only clear out the (offline) check syntax error message
panel when there is something definitely in the panel,
insert of doing on every insertion to the editor
add a check when switching between tabs to only do the required
work when the current tab isn't the one we're switching to
remove accidental declaration
x86_64 JIT: use 32-bit jumps until forced to allocate far away

The JIT was pessimistically using 64-bit jumps for long branches
or any jump between code that is allocated at different times.
Normally, though, code allocation stays within the same 32-bit
range of the heap, so stick to 32-bit jumps until forced by
allocation addresses to use 64-bit jump targets.
x86 JIT: use LEA for fixnum tagging

This has no effect on performance that I can detect, but it
looks better.
ffi/unsafe: fixes related to `define-cstruct' and properties

Fix the binding context for property and property-value
expressions. Propagate wrappers (and therefore properties)
to cstruct subtypes.
fix problem with `require' inside `begin-for-syntax'

The dependency wasn't recorded under the right phase.
fix `resolve-module-path-index' when w.r.t. is submodule

A submodule path on the w.r.t. path was incorrectly (in most
cases) added to the resolved path.
document `define-runtime-path' limitation

Also, log a warning when it is used in a position where it
doesn't work rght with the executable creator. I didn't make
this case an error, because `define-runtime-path' can still
work in that case as long as no standalone executable needs
to be created.
compiler/cm-accomplice: add `register-external-module'

The new function allows declaration of a module dependency, as
opposed to a mere file dependency. Misuse of this function opens
the door to cyclic compilation dependencies, so we have to check
for that in `compiler/cm'.
fix `lazy-require' in phase levels other than 0

The `lazy-require' form expands to `define-runtime-module-path-index',
whch doesn't work right at phase levels other than 0. Work around the
problem by generating a submodule to hold the
`define-runtime-module-path-index' form.

This repair fixes `raco exe' on certain uses of `match', which in turn
uses `lazy-require' at compile time.

Also, use `register-external-module' to generate appropriate
dependencies on lazily loaded modules.
racket/sandbox: fix module-path to path coercion for submod
restore a use of `lazy-require'

This change reverts commit 949d12e2c6, now that `lazy-require'
is supposed to work.
Fix error when a path is not found.

(`path-error' doesn't throw an exception, just prints the error.)
Fix prop problems.

"follow-log.rkt" moved to "framework/private", fix sorting for the
collatz benchmark.