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`.
> Re-setting the path to the same value doesn't seem right. Does the validation of constraints on type arguments change the path at all?

In `ValidationContext#createConstraintViolation` there is this line:

`Path path = constraintViolationCreationContext.getPath();`

Now, the constraint violation is tied with the current value context path, say `names[1]`. If we iterate to the next element, then the failing constraint path will also change. So failing constraints will always have the last index.

Therefore, I have to create a separate copy so that paths and indices don't get mixed.

Alternatively, I could create the path copy in the constructor of `ConstraintValidatorContextImpl` which might be a better.