Move validation errors into a pkg

This is a precursor to fixing my other PR about error lists - That one is on hold until this or something like it goes in.

This makes ErrorList a public type, but does not implement the error interface on it (because I think we want an empty list to not be an error).  ErrorList.ToError() produces an error or nil if the list is empty.  I put it under api/errors, because that is what it is used for, and the Make* functions are sort of validation-centric.
Nit: if this is it's own errors package, "ErrType" becomes redundant, since users will always type "errors.Invalid". "errors.ErrTypeInvalid" doesn't add much enlightenment. (This is standard golang advice AFAIK, but that doesn't mean you have to follow it.)