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.
I don't follow why they need to be versioned.  These are (for now) human-friendly strings.  Whatever comes through can be used.  This also doesn't map to Reason because they are potentially several such errors for a single call.

What we probably want is for all calls to return something that includes an array/slice of ValidationError, at which point the codes would move to types.go.  I'd rather do this one step at a time, though.