Loan changes / data corrections refactor

This is a re-working of the loan changes and data corrections screens the purpose of which is to make it simpler for the user to input changes and prevent mistakes when updating the premium schedule.

The business logic has been moved out of `if`s and into classes - one for each type of change/correction. This cleans up the UI, makes inputting incorrect data harder, and helps to ensure the correct validations are triggered.

It's quite a big one, the diffs are slightly muddied by changing from `Date.today` to `Date.current` which fixed a bug in this pull request that doesn't surface in master.