ConversionUtils: add "Type" convert signature

Added a convert method to ConversionUtils that operates on Type objects
instead of just classes.

This allows the conveying of considerably more information about the
object to convert. Previously, it was only possible to convert single,
non-parameterized types.

By using the actual Type object we can now look for collections and
arrays of objects (multi-element containers). If a multi-element object
is detected, its potential value is interpreted as a list of values.
Each is then recursively converted to its appropriate type.

The ClassUtils.setValue method has been updated to use the new
Type-based signature instead of just the Class convert. If the field to
set is a single-element object, the behavior is unchanged.