[WIP] 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.
Don't love fieldInvalid and fieldNotSupported since it makes it sound like the field itself is not a valid field to be passed / the field is not a supported field.  In particular I can see fieldNotSupported needing to be used when someone passes a field that isnt allowed on an api version for example.  Should maybe be fieldInvalidValue and fieldUnsupportedValue.  Possibly same with fieldDuplicate but that one is debatable.