Return validation errors via the REST API

Enable a structured validation error response (422) that returns each validation error.  Normalize the field value for validation errors so that it corresponds to the real JSON value (rather than the internal value).  Use the same constants in api/types.go and api/errors/errors.go for validation errors.
Now I'm wondering if Causes have to be errors.   I chose the name to match ReasonType, but on a "Cause"