[TASK] Optimize Validation to improve performance
The validation result object traverses the whole result-
tree every time 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 unnecessary operations.
Furthermore the validators are reworked to prevent
superfluous object creation.
Releases: 2.0, master