Sometimes a field's validity depends on the value of another field (password/repeat fields for instance).
Perhaps we should add a validation specification method that takes an action or func with the full object as input and returns a validation error or something.