ClassUtils: make convert work better for numbers

Previously, trying to convert e.g. from an int to a double would not be
successful, because Java cannot do a shallow cast from Integer to
Double, and there is no Double(Integer) or Double(int) constructor.

However, converting from any numerical primitive to any other numerical
primitive is easy (though sometimes lossy): use the Number#fooValue()
methods. With this special case, int -> double and other numerical
conversions are now possible.