Fix incorrect `Patch` logic in widget code

This does not work in master

```javascript
this.model.set('x', x);
this.model.set('y', y);
this.model.set('z', z);
this.touch();
```

instead one has to write 

```javascript
this.model.set('x', x);
this.touch();
this.model.set('y', y);
this.touch();
this.model.set('z', z);
this.touch();
```

or

```javascript
this.model.set({'x': x, 'y': y, 'z': z});
this.touch();
```

because the attr diff is only maintained for the last set operation.  This patch fixes this so the first method can be used.