add generalised DAO and DatabaseFactory classes, and use them to obtainAuditTrailContributorDAO's
refactor the DatabaseFactory concept
Make DatabaseFactory use generics, and get rid of DAO interface