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.

Upgraded to Hamcrest 1.3 and introduced Mockito dependency in 1.8.5.

Issue: SPR-9965