Issue #3600702: Store created validation errors
Fixes the dormant normalised element ID unit test by renaming it to testNormalizedElementId().
getOrCreateValidationError() now stores newly-created validation error objects so its behaviour matches its name. isValid() now only treats validation errors with messages as invalid, so empty created placeholders do not fail a submission result.
Closes #3600702