A base trait for error codes, all error codes need to extend this.
Assumes your error codes will always be case objects.
Encapsulates a field name for use in a validation error
Encapsulates errors in an API
Serializes a validation error into a structure:
{ "message": "the error message", "field": "field_name", "code": "ValidationFail", "args": [] }
Allows for unordered building of org.scalatra.validation.ValidationError