Remove unnecessary vars in StringCharBuffer
Fix #1226: Store minimal info in IR to construct hierarchy
Remove old deserialization hack
Fix #1374: IntType, FloatType and DoubleType should not be exact.
Fix #1297: Make 0.0.equals(-0.0) be false.
Merge pull request #1366 from gzm0/simplify-ancestor-info

Fix #1226: Store minimal info in IR to construct hierarchy
Merge pull request #1373 from sjrd/minus-zero

Fix #1297: Make 0.0.equals(-0.0) be false.
Enforce more things in the IR checker.

* IR check hijacked classes
* Verify that raw JS types and interfaces contain no instance
  member
Remove the obsolete __init__ hack.

It used to be necessary to record that a initialization to
zero of fields of type Long had to reach RuntimeLong.Zero.
Since Longs have been first-class in the IR, no such thing
can happen anymore.
Uniformly keep the '$' at the end of module class names.

This removes some complexity of dealing with and without the
'$'s, depending on in what context they are used.
It also removes the IR constraint that module classes should
end in a '$' at all.
Remove typeof, in and instanceof from Scala ops.

Use the JS operators instead, and unbox the result.

This simplifies the IR by getting rid of 3 rarely used
operators. There will be no performance impact with unchecked
asInstanceOfs.
Use Int codes for JS unary and binary operators.

Instead of Strings.
Merge pull request #1372 from gzm0/cleanup

Remove unnecessary vars in StringCharBuffer
Merge pull request #1376 from sjrd/tweak-ir

Tweak IR
Remove mutable flag on Select and VarRef trees
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.