HV-877 Supporting type use constraints on type arguments

This applies to `PropertyMetaData`. After your feedback, I'll continue the work on parameters and return values and I'll extend `ParameterMetaData` and `ReturnValueMetaData`.
> I find it dodgy to just return the last one. I think we really should differentiate here and check the annotatedType. We can differentiate between Itertable, Map and everything else

So, something like:

- Itertable: take the only one.
- Map: If constraints are specified on both key and value, take the value constraints, ignore the key constraints.
- Other: If more than one type argument is constrained, ignore all and log a warning. How about we throw an exception here?