Use Batman.TrackingHash for Model attributes

I think this addresses #917 and #918  but judging by the `Slow` warnings in my tests, I wonder if its a performance regression. 


- `Batman.TrackingHash` knows its clean values
- `Model::%attributes` is a TrackingHash
- If you set a record attribute to its original value, the record is clean again, a la Rails:

```ruby
# Rails:
person.first_name             # => "Pico"
person.first_name = "Picaux" # > "Picaux"
person.first_name_changed?   # => true
person.first_name = "Pico"   # => "Pico"
person.first_name_changed?   # => false
```

```coffeescript
# batman.js:
person.get('firstName')         # => "Pico"
person.set('firstName', 'Picaux')
person.get('isDirty')           # => true
person.set('firstName', 'Pico')
person.get('isDirty')           # => false
```