Add a `diff` implementation for models

For #1355

```coffeescript
foo.get('diff') # {}
foo.set('value', 'b')
foo.get('diff') # { value: ['a', 'b'] }
```