Do not emit 'return this' for impl class constructors.
Do not wrap emitted code in anonymous functions.

With this change, emitted classes and functions are
all top-level, which makes a big difference to
Closure. It is able to optimize more aggressively.
Add support of @JSName for JavaScript methods.

This is useful for solving naming conflicts between
Scala and JavaScript, e.g., calling a JavaScript
method named `apply` or `val`.