Implement java.util.Arrays.sort w/o accessing underlying.
Fix #551: reflect.Array methods should tolerate widening conversions.

Widening conversions are defined in the Java specification as:
* byte to short, int, long, float, or double
* short to int, long, float, or double
* char to int, long, float, or double
* int to long, float, or double
* long to float or double
* float to double
Fix #550, #555, #556: Remove hack for underlying and classdata.
Merge pull request #566 from sjrd/remove-hack-classdata-underlying

Remove hack for underlying and classdata.