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`.
As a reference:

> I don't think that if using List<@Email String> emailList one should need to apply @Valid explicitly. However, that might be open for discussion.

I still  feel it is a bit odd to specify `@Valid`  explicitly. As I tried to explain to @gunnarmorling, I don't necessarily see a type annotation constraint on an `Iterable` as cascaded validation. For me the cascading occurs once I validate the constraints defined *within* the iterated element. The iteration itself is not "cascading" (not sure whether this makes sense the way I say it).

IMO there is a distinction between iterating the elements and cascading validation. If type annotations would have been possible in earlier BV spec versions, the use of `@Valid` in conjunction with `Iterables` would probably have been `List<@Valid Foo>` which imo expresses the intend much better (btw the latter use of `@Valid` is something we have not yet considered).

That all said, I am happy to not do the  "auto-cascading" for now. First off, @gunnarmorling seems to be the opinion that it is the right thing anyways and secondly our code does not make this distinction between iteration and cascading. In fact we handle type annotation constraints as part of `Cascadable`. For this reason, I think we might be better off, with requiring an explicit `@Valid`.