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.
Make clean also reset inc. opt. state in Test config.
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.