New feature: custom field validators.

Passing in :extra-validators to the validate function will OR the
results of the original function with the one in the map.

This allows nearly endless customisation to the behaviour of the
validation.