Added validate-if validator

Given a triplet `validateIf("key", validatorForKey, validator)`

`validatorForKey` is applied to the value "key", and if it returns no errors then the validator is applied as normal.