[TASK] Optimize Validation to improve performance
The validation result object traverses the whole result-
tree everytime someone checks for errors, notices or
This patch refactors the Result object to cache the result
internally and propagate changes to the parent result object.
In addition the heavy merge actions use this cached
information to prevent unneccesary operations.
Furthermore the validators are reworked to prevent
superfluous object creation.
Releases: 2.0, master