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'm wondering whether this actually should be a ConstraintMetaData / Cascadable. Aren't we in the end just interested in the set of constraints?

I thought we might need to treat the field and type arguments separately in terms of unwrapping (e.g. nested unwrapping). If you guys don't think that would be necessary, then it will be actually easier to only work with the constraints.