Add errors, simplify controller error catching

Uhm, before someone asks, by "add errors" I mean I added `ValidationError`, `ConnectionError` and `BaseError` which are all subclasses of Exception, so we can easily handle validation in a standardized way within controllers.