Widget API fix: Front-end update invoked updates.

WIP

Fixes a problem with cummulative multi-set diff logic as pointed out by @jasongrout

> This seems to be a likely scenario:
> * A function triggered on the model change invokes `model.save_changes` to sync
> * The buffered diff wouldn't be updated, so the model would get confused about what to sync