Fix #1175: Tighten the definition of Closure nodes.

Capture parameters are separated from normal parameters,
since they play very different roles, and have different
requirements.

Captures can have any type, but must always be immutable.

Parameters must always be of type AnyType, but can be mutable.

Additionally, thisType and resultType disappear, and are now
always implicitly AnyType.
Set `this` to `undefined` when inlining a JSFunctionApply.

This is the semantics of strict mode.
Use a Traverser in JSASTTest instead of a Transformer.
Using a Transformer in scalajsp is overkill.

It only needs to transform the top-level node, so a simple
function is enough.
Refactor Transformer with a single method transform().

Instead of overriding transformStat() and transformExpr(),
subclasses should now override transform(). This method takes
a boolean parameter telling whether it's used in statement
position.

Additionally, transformations of ClassDefs and their defs is
moved in a separate subclass ClassTransformer. This is actually
not used at all in our current codebase, but other people could
come up with use cases.