Implement `_was` and `changes` for in-place mutations of AR attributes

That would cause this to become an edge case that would break:

```ruby
model.a # => a
model.a.upcase!
model.changed? # true
model.a.downcase!
model.changed? # would be true, should be false