HV-877 Discovering and registering type use constraints

A bit smaller. This PR focuses on discovering and registering type use constraints for the base use cases. 

Cascaded type usage, and the actual validation of the constraints will be in separate PRs to make things easier to track.

Note: you'll need Java 8u20 for this to work. There is a bug with parameters annotated types with earlier JDKs.
The idea is to:

1- Build a discovered map for constraints defined on formal parameters and actual type arguments.

2- Call `super.getBeanConfigurationForHierarchy( beanClass )` to start the process.

3- Override certain methods from `super` where the map is checked and the matched constraints are applied.