Add test cases for {Float,Double}.isNaN.
Fix #1284: doubleToLongBits/longBitsToDouble/floatToIntBits/intBitsToFloat.

They are implemented on top of typed arrays if those are available.
Otherwise, they are polyfilled with IEE 754 black magic.
Fix #1260: Detect ByteOrder.nativeOrder() with Typed Arrays if possible.
Fix RefinedType equality in the optimizer.

The broken equality caused the loss of inlineable class optimization
opportunities.
Cleanup java.util.Arrays.

Avoid a lot of duplication by implementing algorithms with
@specialized methods, and inlined lambdas.
Fix line endings in java.util.Date.
Coding style in java.util.Date.
Cleanup java.util.Random.
Cleanup java.util.Formatter.
Cleanup java.util.concurrent.TimeUnit.
Review j.u.concurrent.atomic.* classes.
Review java.util.regex.*.
Review java.io.Reader and its subclasses.

This includes implementing read(CharBuffer).
Review java.io.Writer and its subclasses.
Review java.io.InputStream and its subclasses.
Remove printlns in UUIDTest.
Implement java.io.OutputStreamWriter.
Review java.io.OutputStream and its subclasses, except PrintStream.
Fix #1192: Proper hashCode() for Float and Double.

Because of the common encoding for integer and floating point
values, the hashCode of Floats and Doubles must align with that
of Ints for the common values.

For other values, we use the hashCode specified by the JavaDoc
for *Doubles*, even for values which are valid Float values.
Because of the previous point, we cannot align completely with
the Java specification, so there is no point trying to be a bit
more aligned here. Always using the Double version should
typically be faster on VMs without fround support because we
avoid several fround operations.
Fix #1272: Reimplement completely java.io.PrintStream.