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 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