Current field value (may be null).
T? get value => _value;
Updates value and notifies listeners when it changes.
When already in error, only clears the error if the new value passes validator (does not set new errors while the user edits).
set value(T? next) => applyValueFromUser(next);