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`.
This is intentional, the code returns `ConstrainedTypeArgument` only if the type argument has constraints, otherwise it will return a null, and the caller performs a check before adding to the set of constrained type arguments.

Anyway, this is not relevant anymore, since we're moving away from constrained elements to meta constrains to represent constraints on type arguments.