Introduced TypeInformation abstraction to enable generic autowiring.

Introduced closed TypeInformation API from Spring Data Commons to enable carrying type information including generics through code and resolving injection points based on generic type references. Introduced method overloads in BeanFactory implementations using TypeInformation instead of Class<?> to make sure we keep generics information of the injection point around.

Issue: SPR-9965