Do not box Booleans, Doubles and Longs.

These three primitive types have a perfectly valid and
identifiable JavaScript representation already, respectively
boolean, number and RuntimeLong. Therefore, there is no need
to box them in a java.lang.{Boolean,Double,Long}.

The only thing that we lose semantically by doing this is
that the toString() method of a Double will not add the .0
it used to add when the value happens to be an integer. For
consistency, this behavior has also been removed from Float.
Do not box Ints.

Contrarily to the previous commit, where non-boxed values could
still always be identified in an accurate way, in this commit
we cannot do that anymore.

Since both Ints and Doubles are non-boxed as numbers, and their
values overlap, we cannot always tell whether a value was
initially an Int or a Double. Specifically, all integer numbers
will answer true to isInstanceOf[Int] *and* isInstanceOf[Double].
Hence, all Ints are also Doubles, and some Doubles are also Ints.