Make row inference slightly smarter

Now it works as long as one of the arguments is, in
all cases, a row polymorphic class type
get-root-set docs clarification
fix tutorial exercise
Catch syntax lifting at the top-level in TR

This is helpful for typechecking forms that lift
expressions such as object instantiation or contracted
values when they are used at the top-level.

It's not normally an issue for typechecking modules
because lifting is delimited by the module extent so that
normal local-expansion will cover it.
Fix type of - to not be wrong on negative fixnums

Rolling this forward because the math library is no longer dependent on
the broken behavior. Also nothing in the main repo seems to depend on
this.
docs improvements
JIT: enable unboxing of flonum arguments in mutual recursion
Adjust handling of types for non-expressions

Some forms like `define` do not produce a value
and thus do not have a type. Instead of returning
the #<void> value for these cases, return the symbol
'no-type.

Also fix printing in several places to reflect this.

Fixes a regression due to commit 00470e3 and also
fixes an unreported bug with (:print-type ...) on
non-expressions.

Closes PR 13758
LGPL by reference
Windows installer: fix recording of document-icon paths
Fix a TR bug for row polymorphic application

The domains in a row polymorphic function weren't checked
properly when row inference was used.
improve error message of object=?
Indentation implementation for Scribble
Adjust DrRacket to better support #lang-line specific
keybindings and then use that to add in an esc;q keybinding
for scribble
docs typos
fix ada splash screen
Add contract-profile-thunk
Document contract-profile-thunk.
More docs about contract costs in TR.
support older Cairo and GDK versions