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`.
> Why is the value handler set to null here? Isn't it re-set later on anyways?

I keep coming with this problem. Say the the field is `Optional`, so we have the optional value handler set in the `ValueContext`. Now when we get the wrapped value, say a `String`, the value handler is still set to optional, which will raise an error when trying to determining the type or getting the value.

I suggest that we update `#setValidatedValueHandlerToValueContextIfPresent` by doing something like:

 if ( metaData.requiresUnwrapping() )
set handler
else
set null

What do you think?