Formats type can report most-general type
Approver delegates reporting differences to a DifferenceReporter.

A DifferenceReporter can use the format's type identifier to choose the most appropriate way of diffing the approved and received files.

The JUnit adaptor package creates Approvers with a JUnitDifferenceReporter, which throws a subclass of ComparisonFailure.  We don't need the ApprovalError exception now.

The JUnitDifferenceReporter converts binary files to hex to report differences.  Not very helpful, but better than nothing?
Refactoring.
Updated build files