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. 
Totally agree.. its an implementation detail that is related to the behaviour of save, I think the reason I used it in this case was to just make us aware we are using a callback and make it obvious there is a side effect to calling save - other than persistence... But the AccessDetailsMailer assertion is good enough for this and shows intention.