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.
This is not a proper implementation for `hashCode` of double.