Use normal methods instead of helpers in the IR

Hijacked classes are now much more normal than they used to be. Methods can be called on them, they have proper IR that can optimized in a regular way, etc. Basically, the fact that they are hijacked only has the following consequences:

* They do not have constructors. Instead, their "instances" are values of primitive types (or whatever representation thereof, e.g., `RuntimeLong` for longs).
* `Apply` nodes to maybe-hijacked classes that survive the optimizer are desugared into calls to helpers.
* The `ScalaJSClassEmitter` does not emit code for them (only class data).

Basically, this means that the IR of hijacked classes is only ever used by the optimizer if it can inline the methods. Otherwise, the desugaring ignores it.
Doesn't that mean that somewhere around half of all doubles (those < 0.5) all hash to the same value? That's got to totally destroy the efficiency of any hashmap you put them in. 

Would another alternative be  making a more well-distributed (maybe more expensive?) hashCode for doubles, and making integers use the same one? That will make the hashcode of integers differ from that on the JVM, and be a lot more expensive, but at least both integers and doubles would presumably have well-distributed hashcodes