Pack (mostly) stack TNs according to lexical scope information
Packing TNs from shallow scopes before more deeply nested one
is a perfect elimination order when the live ranges span the
full scope (the interference graph is a comparability graph).
Use that as a heuristic, and do that for TNs that are known
to have such simple live ranges before the rest: this ensures
that bad TNs don't mess everything up.
The result is much tighter stack allocation (most of the effect
comes from initialising stack frames at a smaller size, and growing
less aggressively), and fewer long-lived stray references.
Incidentally: fix catch block packing on win32, solving lp#1072739