API Handle uncaught ValidationException on CMS controller execution

This removes the need for a lot of boilerplate code
around DataObject->write() logic, and avoids generic 500 errors
on user-level failures. This should really be a per-project choice,
but at the moment request handling doesn't allow to configure
custom exception handling.

Ported https://github.com/silverstripe/silverstripe-cms/pull/296 from post-2.4 to 3.0.
Same idea, but with a "validation error" wording addition, since the default
overlays in the CMS don't visually distinguish between errors and success messages
(which is out of scope to fix here).