Remove the field originalName from StringLiteral.

It is completely useless. Originally, when I first introduced
source maps, Scala.js method names were still encoded in crazy
strings with bracket-selects. At the time it seemed logical to
support original names for StringLiteral because of this, even
though there was no evidence whatsoever that original names were
supposed to mean something for string literals in source maps.
Now, since there isn't any more evidence of this, and all Scala.js
names are encoded as identifiers, there is no point in keeping
this field.
Fix #1123: IR checker should allow Apply/Select on {Null,Nothing}Type.
Fix #1124: compile warnings in HelloWorld and Reversi.
Make js.WrappedArray extend AbstractBuffer.
Add overrides to scm.Buffer, for tracking.
Fix #1120: Rewire mutable.Buffer.newBuilder to js.WrappedArray.
Add case IsInstanceOf(inner, _) in inlineable methods.

This mostly gets rid of the canEqual() methods that are part of
the equals() methods generated for case classes.
Fix #1104: Separate IRTrees and JSTrees.

This does introduce some code duplication. Mostly in the Printers
for IR trees and JS trees. But not much otherwise.

It does bring more safety, especially around JSDesugaring, obviously.

ScalaJSClassEmitter turned out to require major transformations,
because it was an IR to half-IR/half-JS pass. I turned it into a
pass IR to JS, and it calls directly JSDesugaring for the inner
parts that it receives as IR (the body of the methods, mostly).

The JS trees and related tools (their printers, JSDesugaring,
ScalaJSClassEmitter) have been moved away from the ir package
into tools.javascript. This reduces the footprint of the
scalajs-compiler, which does not need all this stuff.
Merge pull request #1126 from sjrd/ir-check-null-nothing-call

Fix #1123: IR checker should allow Apply/Select on {Null,Nothing}Type.
Merge pull request #1127 from sjrd/fix-examples-warnings

Fix #1124: compile warnings in HelloWorld and Reversi.
Merge pull request #1128 from sjrd/js-wrappedarray-default-buffer

Fix #1120: Rewire mutable.Buffer.newBuilder to js.WrappedArray.
Get rid of anyEqEq and anyRefEqEq and optimize them (a bit).

First, this is closer to what the JVM backend does. Second, it
allows the optimizer to optimize at least the anyRefEqEq case,
if the equals() method can be inlined.

The Object.equals() method is marked @inline so that the test
  x == y
transformed by the compiler into
  if (x eq null) y eq null else x.equals(y)
will become, once inlined:
  if (x eq null) y eq null else x eq y
The latter shape is treated by foldIf case to be reduced to
  x eq y
which completely removes the overhead of the universal equality.
This happens a lot for pattern matchings with case objects, as
well as explicit x == y where x is in fact a type with reference
equality (such as jl.Class).

Optimizing anyEqEq is still pending.
Fix #1132: RuntimeLong.intValue() not preserved by numberIntValue(x: jl.Long).
Merge pull request #1125 from sjrd/separate-ir-js-trees

Fix #1104: Separate IRTrees and JSTrees.
Optimize BoxesRunTime with the numeric semantics in mind.
Better implementations of unbox helpers.

Use primitive operators that convey more meaning to the VM
as the expected result type.
More constant folding.
Merge pull request #1131 from sjrd/more-opts

More optimizations
Fix #1130: Add RuntimeLong.hashCode().

It implements the spec of java.lang.Long.hashCode(), which is
*not* the same as x.## for a Long x.
Fix #1133: AtomicReference should compare with reference equality.

Fixed a few signatures in Atomic classes in the process.