Reset fields when no selected on save

Bit messy with private methods but I think we could probably abstract this further but wanted to get proper conditional validations in first and make sure all the forms are aligned.

other work address clearing still to do. Adding now...

btw, it's done in `valid?` so that any validations we add will take into account that these fields are blank. 
I don't think this belongs in this abstract class. A smell is indicated by the requirement of the empty method, which I know you don't like either. I definitely feel like subclasses should be opting in to this callback.

You also made a good point about running this callback after validations, how do you feel about using `before_validation` instead?