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!
Same here. Also might be more intention revealing to extract that into a predicate like `people_valid?`