Accumulate validation errors

Rather than report the first error, accumulate all errors and report them all
at once.
Define an errorList type and use it to accumulate
Merge pull request #371 from thockin/valid3

Accumulate errors during validation