Use Scala primitive types instead of JS types by default.

With the removal of boxing introduced in the preceding commits,
the runtime representation of all JavaScript primitive types has
a direct corresponding Scala type.

Hence, Scala types such as Int or Double can now be used where
previously a js.Number was required to ensure no boxing would
occur.

Sometimes, the actual JavaScript types are still useful, either
to access their methods, or because they can hold the undefined
value as an additional possible value. But most of the time they
should not be needed.

This commit hides away primitive JavaScript types under
scala.scalajs.prim._, and replaces all occurrences of primitive
JS types by their Scala equivalent (or more precise, such as Int)
where applicable. Only a few places still use the real JS types.
Add type aliases from disappeared js._ types to their Scala types.

This encodes in the type system itself that the default type
to use to represent a JavaScript number (resp. boolean, string, and
undefined) is scala.Double (resp. scala.Boolean, java.lang.String,
and scala.Unit).

It will also allow most codebases to upgrade smoothly to actual
primitive JS types having been hidden away in js.prim._.
Merge pull request #435 from sjrd/scala-prims-in-js-interop

Use Scala primitive types instead of JS types in JS interop
Fix #425: Exact semantics of Int (arithm modulo 2^32).
Merge pull request #436 from sjrd/exact-int

Fix #425: Exact semantics of Int (arithm modulo 2^32).