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.
Fix #364 for good: remove magical Rhino top-level package objects.

Instead of hard-coding a list of known problematic top-level
package names, we detect what needs to be removed by listing
the properties in the Packages object.
Merge pull request #1200 from sjrd/tighten-closure-nodes

Fix #1175: Tighten the definition of Closure nodes.
Merge pull request #1202 from sjrd/fix-tlds-in-rhino

Fix #364 for good: remove magical Rhino top-level package objects.
Add replace and deleteCharAt methods to StringBuilder and StringBuffer
Merge pull request #1205 from l15k4/replace-deleteCharAt-StringBuilder

Add replace and deleteCharAt methods to StringBuilder and StringBuffer
Fix #1207: Good toString for OptimizerOptions
Merge pull request #1209 from gzm0/optimizer-options-tostring

Fix #1207: Good toString for OptimizerOptions
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.