Sets up the firstChild/nextSibling links of each LambdaExp.
Setup 'outer' links of ScopeExp and its sub-classes.
Also generates a class name for each ClassExp and registers each class.
Also, if lambda is bound to a unique declaration, make that its name.
This pass also checks for unreachable code, which happens if a
neverReturns expression is followed dynamically by another expression.
Doing this check after InlineCalls allows benefiting from data-flow; OTOH
checking for unreachable code this late yields less precise type inference,
but only when there actually is unreachable code, which is bogus anyway.
(Currently, we don't check for infinite loops/recursion, but we
hope to add a conservative test for this.)