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.
Fix #1389: partest is broken.

It was broken in the refactoring of
df111c62335a0591dcea54461df934923106276d
which uniformly added $s to all occurrences of module class
names.
Merge pull request #1392 from sjrd/fix-partest

Fix #1389: partest is broken.
Split Primitives.scala into Any.scala, Dynamic.scala and Object.scala.
Merge pull request #1391 from sjrd/rethink-js-package

Fix #1383: Rethink the scala.scalajs.js package
Merge pull request #1393 from sjrd/split-primitives

Split Primitives.scala into Any.scala, Dynamic.scala and Object.scala.
Fix #1397: Better IR-checks for exported methods

Added checks:
- Exported name does not contain `__`
- Exported method is not static
Merge pull request #1398 from gzm0/ir-check-export-name

Fix #1397: Better IR-checks for exported methods
Fix #1399: Propagate closure params in JSDesugar environment
Remove RoughClassInfo.

The only usage of rought info was in the Rhino environment,
which is super slow anyway. So it might as well use the full
info.
Remove ClassInfo.name.

It can always be recovered by decoding the encodedName, and is
virtually never useful anyway.
Move OptimizerHints from the Infos to the Trees.
Add abstract methods to the trees in the IR.
Give separate info to each exported method/property.

Previously, the info of all exported methods and properties
were gathered in one single pseudo-method. Now, each exported
method/property has its own exported method in the infos
(under its exported name).

For exported constructors, they are all gathered in one single
pseudo-method called __exportedInits.
Merge pull request #1400 from sjrd/clean-infos

Fix #1395: Clean infos
Merge pull request #1401 from gzm0/fix-desugar

Fix #1399: Propagate closure params in JSDesugar environment