HV-925 Implementing unwrapping rules

- Adding a boolean flag to @UnwrapValidatedValue to allow to explicitly specify unwrapping or skipping of unwrapping
- Introducing ValidatingValueUnwrapMode used by metadata to distinguish between the different potential ways of handling unwrapping of validated values
- Updating all levels of metadata and metadata builders to make use of ValidatingValueUnwrapMode
- Updating the constraint validator resolution in ConstraintValidatorManager to take different type of unwrapping into account
- Updating test, splitting some of them into smaller ones
- Making sure a copy of the property path is made when creating constraint violations to avoid side effects
- Extending the contract of Cascadable
- Updating docs and docs examples

foo
HV-925 Renaming ValueContext#typeOfAnnotatedElement to ValueContext#typeOfValidatedValue
HV-925 Adding test case for all defined scenarios in issue

- Making sure the right error types and messages are thrown
- Moving NotBlankTypeUse and NotNullTypeUse into the testutil package
HV-895 Adding test to show that issue was resolved by HV-925