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 found the common case to be a bunch of internal helper functions that return accumulate errors into and return ErrorList, and a smaller number of external functions that accumulate errors into ErrorList and return ErrorList.ToError().

I guess EVERYBODY could return ToError(), which means ErroList would become a list of lists of lists ...  I'm abivalent.  We still need to append() (next PR), and I find thi spattern clean enough.  I don;t want to dither on this much longer - it's not THAt important.