More meaningful response to getReportFaults() - return a ContactCollection
containing objects of ContactWithReason.

Also includes fixes for the dataField setter, and base collection object to
allow collections to contain objects of the selected class OR sub-class of
that class