Use structured errors during validation

Not necessarily. "validationError" is a bit long for my taste but if there's not an alternative you like, then go ahead. I think usually in go people use the package name to help disambiguate, allowing shorter names--but our package name "api" is not really helping us much here, unfortunately.