Add a `diff` implementation for models

For #1355

```coffeescript
# foo is a record instance of App.Foo
# let's say foo started with property "value" as "a"
foo.get('value') # 'a'
foo.get('diff') # {}
foo.set('value', 'b')
foo.get('value') # 'b'
foo.get('diff') # { value: ['a', 'b'] }
```