Optimize assertArrayEquals() for primative non-floating point types.

This change avoids using reflection when calling assertArrayEquals() for all primitive types except float and double. It does increase the amount of duplication in the code, but I've tried to keep the duplicates trivial and too a minimum.