Fix #802: While(true, body) should always typecheck as NothingType.

This also uses a pattern match instead of an == because it
avoids the allocation of the BooleanLiteral and the virtual
dispatch of ==.
Fix #804: Delay protect() mechanism until desugaring.

This also fixes the issue that a Select(_, _) was not
protected.
Merge pull request #805 from sjrd/fix-while-typing

Fix #802: While(true, body) should always typecheck as NothingType.
Follow up on #804: do not emit raw JSApply's from the compiler.

The compiler now emits JSFunctionApply, JSDotMethodApply or
JSBracketMethodApply instead of raw JSApply's.
Merge pull request #808 from sjrd/clean-opt-state-in-test

Make clean also reset inc. opt. state in Test config.
Merge pull request #806 from sjrd/delay-protect-to-desugar

Fix #804: Delay protect() mechanism until desugaring.
wip
More wip
Incremental part seems to work.
Inliner works for Skip() and trivial accessors.
Major rewrite and simplifications.
Full inlining. Tests pass.
Fix bug.
Inline more things.
Inline multiple trait impl forwarders if equivalent.
Remove debug messages.
Add debug message telling how many methods were re-optimized.
Log coarse time measurements of fastOpt.
Fix bug.
Move unregisterAllCallerOf() from process() to tag().