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 ValidationError