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