[Validator] Added ConstraintViolation::getConstraint()

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

This PR adds a `getConstraint()` method to the `ConstraintViolation` in order to access the constraint causing the violation.

Related to #7276, #7273 and #9691.
I prefer to keep the arguments ordered by their importance for the class. The list of violations and the constraint are the two most important data structures for the constraint violation builder.

The `= null` is in for BC only. A constraint should always be provided, if possible.