HV-905 Providing a global config for auto unwrapping

An early attempt. Any thoughts on the direction?
> I don't like that the behavior of 8 depends on what un-wrappers are registered.

It depends on whether `@UnwrapValidatedValue` is given or not. Seems very easy to grasp to me. Also consider that this is a very rare case. In which real world case will a constraint match for the wrapper and the wrapped type? `@NotNull`/`@Null` are the only ones where this seems likely to me and specifying `@UnwrapValidatedValue` in this case seems perfectly right to me. Actually it's what we also to as of today.

> Also, I am not a big fan of @Min(3) Optional<Integer> in case 4 validating the wrapped value.

Why that? It's what we do today as well for e.g. `@Min(3) IntegerProperty`; the wrapped type is validated. From looking at this code, that's exactly what a user will expect. They won't expect a constraint declaration error (due to applying @Min to the Optional itself) and they won't understand why they should specify `@UnwrapValidatedValue` although the intention of that code is totally clear.

Summing it up, the suggested rules are IMO the right middle ground between making life of users easier (by not requiring `@UnwrapValidatedValue` where we can deduct the intention unambigiously) and being deterministic (by requiring `@UnwrapValidatedValue` where the target of the validation cannot be determined). It really follows the principle of least surprise.