[!!!][FEATURE] Backport recursive and allowing empty validation from Flow

This change enables recursive validation by backporting the TYPO3.Flow
validation API. Also the validators allow empty values now.

This is a breaking change if you expected the previous behavior. In order
to make a property required you now need to add the NotEmptyValidator
explicitly!

This change also changes the validators required return type for the
default property mapper before 6.1. Before this change the isValid method
had to return a boolean value. Now this is not necessary anymore, because
only the errors added by the validator are checked.

Releases: 6.2
Resolves: #6893
Resolves: #34838
Change-Id: I9622a5c3a09689a7db6e80df361b8f6fec671c83
Reviewed-on: https://review.typo3.org/21428
Reviewed-by: Marc Bastian Heinrichs
Tested-by: Marc Bastian Heinrichs
Reviewed-by: Markus Günther
Tested-by: Markus Günther
Reviewed-by: Anja Leichsenring
Tested-by: Anja Leichsenring