Add correct interest only loan premium payment logic

Also replicate PremiumScheduleQuarter logic in
LegacyQuarterlyPremiumPaymentCollection & QuarterlyPremiumPayment.
Remove PremiumScheduleGenerator

Logic is now split between PremiumSchedule and the *PremiumPaymentCollection classes.
Pad premium schedule report row premium amounts with nil when < 40 premium payments
Remove PremiumScheduleQuarter

Logic now handled by LegacyQuarterlyPremiumPaymentCollection and QuarterlyPremiumPayment.
Add premium_calculation_strategy to PremiumSchedule

One time data migration sets premium_calculation_strategy to
'legacy_quarterly' for all existing premium schedules.

New premium_schedules derive the calculation strategy from the repayment
frequency of the loan.
Fix typo in request spec
Implement correct quarterly loan repayment premium payment schedules

Identical to the legacy logic except for the additional final payment
on non-exact quarter number repayment durations.
Implement correct six-monthly and annual loan repayment premium payment schedules

Refactor common premium payment code up into base class.
Implement correct monthly loan repayment premium payment schedules
Replace existing PremiumPayment class hierarchy with single PremiumPayment class

New PremiumPayment class has a RepaymentFrequency, which knows the
months_per_repayment_period.
Add spec for PremiumSchedule#drawdowns
Move drawdowns_taken_by_quarter logic to PremiumSchedule
Refactor core logic to new OutstandingDrawdownValue class
Refactoring of premium payments calculation

Replace premium_calculation_strategy column with legacy_premium_calculation
(boolean).

Refactor logic out of *PremiumPaymentCollection and PremiumPayment classes
into PremiumSchedule and OutstandingDrawdownValue.
Remove unused *PremiumPaymentCollection and Premium Payment classes
Use accessor instead of instance variable
Fix nesting of specs
Update logic based on feedback from CfE and improve some specs
Convert some public methods to private and remove unused method
Fix incorrect description in spec