Fix compiler/test on Windows.
Add source map support detection to NodeJSEnv
Remove obsolete require('source-map-support') statement

The NodeJSEnv loads this automatically now.
Automatically set correct tags for tests
Remove mutable flag on Select and VarRef trees
Unseal js.Any.

There was no real reason for js.Any to be sealed, actually, and
it opens opportunities to define custom types in user-space.
Mark js.Dynamic.{select,update}Dynamic with @JSBracketAccess.

This removes two compiler primitives.
Add `@JSBracketCall` to generalize js.Dynamic.applyDynamic.

`@JSBracketCall` can be used on any method in a raw JS type that
has at least one non-repeated parameter. It will be translated
into a JS apply method where the method name is the first parameter.

This removes a bit more of the magic of js.Dynamic.
Factor the implementation of literal.applyDynamic{,Named}.
Fix #1021: IR-check assignment to val fields

Assignment to immutable val fields is only allowed in constructors.

Scalac handles immutable (val) fields that are mixed-in from a trait
adding a setter. The val is then initialized through this setter in
the trait initializer. This violates the IR contract that immutable
vals may only be assigned to in constructors.

Further, scalac sometimes unsets fields needed for by-name
parameters. Consider the following:

    class A(_x: => Int) {
      lazy val x = _x
    }

In the (lazy) initializer of `x`, `_x` is set to null, once
initialization is complete (unless `_x` is used otherwise).

Therefore, we verify the flags emitted by scalac and do a second pass
over the trees to fix the mutable flag if necessary.
Fix #1377 (again): Stabilize JSEnv timeout tests

By sufficiently increasing the absolute time difference between events
we test, we hopefully remove flakyness.
Merge pull request #1387 from gzm0/de-flake

Fix #1377 (again): Stabilize JSEnv timeout tests
Merge pull request #1378 from gzm0/ir-check-val-field-assign

IR check val field assign
Merge pull request #1386 from sjrd/remove-magic-of-js-dynamic

Remove most of the magic off js.Dynamic
Merge pull request #1380 from gzm0/auto-tags

Automatically set correct tags for tests
Remove js.prim.* types, and everything related.

The type aliases js.Boolean, js.Number, js.String and
js.Undefined have been removed. The documentation specifies
that the Scala types should be used.

Operations available on JavaScript numbers and strings that do
not have an equivalent in the Scala/Java library can be made
available through imports of implicit pimps of Int/Double and
String:

  import js.JSNumberOps._
  import js.JSStringOps._

Working with dynamically typed JavaScript-style code used to
benefit from js.prim.* types for various things. To restore
(and improve) that kind of code, a few chosen implicit conversions
can be imported:

  import js.DynamicImplicits._

This fixes #1384.
Merge pull request #1390 from sjrd/remove-js-prim-types

Remove js.prim.* types, and everything related.
Move URI methods from js.package to js.URIUtils.
Remove numeric-related methods and constants in the js package.

The corresponding Scala/Java methods and constants should be
used instead.
The scala.scalajs.js package is not a js.GlobalScope anymore.

It only contained one last native method (as opposed to
primitives), i.e., eval(). Now eval() is implemented in user-space
using the js.Dynamic API.

This transformation allows to implement `undefined` and
`isUndefined` in user-space as well, instead of as primitives.