New classes for representing validation errors

Specifically, BagValidationFileError (for representing info
about an individual file that failed to validate) and
BagValidationErrorSet (for representing a collection of
error objects generated by a validation run).

These classes amend/replace the ManifestError and
ChecksumMismatch classes from recent commits.
Move BagValidationFileError types into classes

Additionally, change the way the errors get delivered.
renamed errors list to details ; simplified error/exception class hierarchy