ConversionUtils: make variable final
ArrayUtils: remove unnecessary elses
ArrayUtils: fix typo
ArrayUtils: remove unnecessary code
ConversionUtils: return null if null target type
ConversionUtils: add method to get Class from Type
ConversionUtils: simplify convert(Object, Type)

In particular, this change splits the logic into a few
helper methods to make it easier to read and understand.
ConversionUtils: use canCast where appropriate
ConversionUtilsTest: remove exception declarations

None of the declarations were necessary.
ConversionUtilsTest: add getNullValue test
ConversionUtilsTest: add getNonprimitiveType test
ConversionUtilsTest: add cast test
ConversionUtilsTest: add canCast test
ConversionUtilsTest: add canConvert test
ConversionUtilsTest: add convert test
ConversionUtils: fix bug in getComponentClass

It is not safe to cast directly to Class<?> because
getGenericComponentType() may return a non-Class Type. So we filter
through the getClass(Type) method to ensure the result is a Class.

We probably want to add a getComponentType(Type) method that returns a
Type, and deprecate getComponentClass(Type) in favor of downstream
callers chaining getClass(getComponentType(type)) explicitly.
ConversionUtilsTest: add getClass test
ConversionUtilsTest: add getComponentClass test
ConversionUtils: report casting from null as OK
ConversionUtils: make canConvert match convert

Specifically, the convert method tried harder than canConvert did to
find a compatible single-argument constructor. The two methods have
now been brought into sync with the same constructor detection logic.