If registrantType.minimum deposit is null, then the minimum deposit amount should be the full cost
Pretty significant refactoring
 - make sure the same class of objects is passed into `Registration.fromDb()`
 - fix bug in calculations
 - add some comments
 - add registrantTypeId in tests
Merge branch 'EVENT-70' into dev