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.
(follow on to other comment) I think that these would need to be versioned if we return them from the API as part of the structured error response for api.StatusDetails... in which case maybe these should be part of types.go as an extension of ReasonType and referenced here?