Disabling adapt in TreeChecker

well-typed code should not need further adapations. That's why `adapt` is
replaced by a subtype assertion in TreeChecker.

Flushed out two instances where typechecking did not produce well-adapted trees -
one in typedClosure, the other manifested itself in typedSuper.
Split Nullarify functionality to ElimByName, Erasure

New phase ElimByName elimintaes by-name parameters. All other
occurrences of parameterless methods and ExprTypes are eliminated
in erasure.

The reason for the split like this is that it is very hard for
Nullarify to determine when to insert ()'s. The logic for this
is fragile because we need to look at previous denotations which might
not exist (before splitter) or might result from a merge
between parameterless and nullary methods. In Erasure
the same is much simpler to achieve.
Moved -Ycheck to last phase before erasure

This should set the foundation to turn debug erasure so that it can be
turned on by default