Fix failing tests

:green_apple: :green_book: :green_heart: :tea: 

Mostly tweaky fixes, with the following notable changes:

1. `Person` can now access its parent `Affordability` object to work out whether it's the 1st or 2nd person, so it can serve up the right error messages.
2. The validations were a bit tangled up, with some validations raising exceptions if other objects weren't valid. This probably needs a refactor, but for now I've just got them executing in the Right Order.

Probing questions encouraged!
Agreed! In fact @mconnell one-upped eachother a few times on finding concise ways to say it, but for some reason we forgot to actually commit it. Will add.