Pass old value to field validation

This allows state machine validation, that only accept a value if it
corresponds to some valid state transition.

This could previously be implemented by model-level validators, but it makes
sense to add it as a feature of the base types, since you don't need full
instance-access for that, seeing that the validate function already accepts a
context dictionary of previous valid data.