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.
Merge pull request #1261 from chillu/pulls/validationexception-routing-3.0

API Handle uncaught ValidationException on CMS controller execution