Feature/validation exceptions

Instead of returning a 200 response for validation errors - it would be a lot cleaner to return an error response.

This PR converts validation errors into exceptions, where the response code can be defined in the validation array.