[FIX] models: in onchange(), do not send a field value if it has not changed

The method onchange() executes onchange methods in cascade.  Suppose onchange()
is called and a field F=1 in the form.  If an onchange method set F=2, that
value is put in the result variable.  If another onchange method set it back to
F=1, the binding F=2 must be removed from the result variable.

Fixes #2309