Implement String methods in an object rather than as a trait.

This fixes the mess that RuntimeString was as a trait. It was
very hacky and very dependent on the implementation details.

Now, RuntimeString is only an object, and its methods take an
explicit `thiz` parameter that stands for the String being
operated on.

Most methods are inlineable one-liners. For the others, Closure
turn them into static methods anyway.
Fix #1183: Remove JSPrimitives NTR_MOD_SUFF, NTR_NAME_JOIN
Fix #1172: Also run checksizes over gzipped sizes
Reorganize the construction of ScalaJS in scalajsenv.js.

Instead of building one big literal object, we add properties
one at a time. This doesn't make a difference to Closure, but
now we can define later fields in terms of earlier fields.
In toolsJS test, do not inherit __ScalaJSEnv.

Otherwise, multiple ScalaJS objects will share their env
field, each will try to set things in it and freeze it,
which is no good.
Make the environment info a global field directly.

Also, set its field `exportsNamespace` after the fact with
what we chose to use.

Finally, we also freeze the environment info object when we're
done with initializing Scala.js, to prevent anyone from modifying
it after that.
Fix #1184: Incorporate JSGlobal as a field of environment info.

This gets rid of an IR node and a compiler primitive.

Desugaring still applies a shortcut to simplify
ScalaJS.env["global"]
as
ScalaJS.g
which is quite important, given how much this field is used.
Fix #1169: Make IR printer print cases of match tree nicely

It now looks like this:

    match (x1) {
      case 1 | 2 | 3:
        mod:s_Predef$.println__O__V("low");
      case 4:
        mod:s_Predef$.println__O__V("four");
      default:
        mod:s_Predef$.println__O__V("other");
    }
Avoid crashing for classpath elements that do not exists on the file system.

Added DummyVersion constant value, exists() to detect file that does not exists and getDummyVersion to provide a string version for a dummy file.
Implemented DummyVersion and isDummy in physical and node file systems.
Added simple ClasspathElementsTraverser tests using the PhysicalFileSystem.