ClassUtils: support method return type resolution

This adds a new method signature for getTypes, and one for
getGenericType, which work the same way as the existing ones,
but for method return types rather than field types.

These methods use gentyref to do the heavy lifting. Thanks, gentyref!
AbstractSingletonService: use more specific type

The LazyObjects instance will definitely return a collection of objects
of type PT, not just Object. This distinction is important now that the
ObjectIndex is more selective about which pending objects it resolves.
ConversionUtils: implement getClass using gentyref

This makes the implementation simpler and more robust, since
gentyref considers many more cases than the code did before.

Unit tests still pass.