Some consistency in validation returns.

Public functions return a raw slice, internal helpers return errorList.
Why start with an errorList if you are returning []error? I don't see what the casting gains us other than using the Append call rather than the canonical append(allErrs, ...) call.