polymorphic belongs_to association with touch: true updates old record correctly

An example:

```ruby
class Book < ActiveRecord::Base
  has_many :comments
end

class Song < ActiveRecord::Base
  has_many :comments
end

class Comment < ActiveRecord::Base
  belongs_to :commentable, polymorphic: true, touch: true
end

comment = Comment.create commentable: Book.find(1)

# the commentable's timestamp is updated when the comment changes
comment.update_attributes text: 'lorem ipsum'
# => Book.find(1).updated_at == Time.now

# Both the old and new commentable's timestamp is updated when the
# commentable changes to another instance of the same class
comment.update_attributes commentable: Book.find(2)
# => Book.find(1).updated_at == Time.now
# => Book.find(2).updated_at == Time.now

# Only the new commentable's timestamp is updated when the
# commentable changes to an instance of another class
comment.update_attributes commentable: Song.find(3)
# => Book.find(2).updated_at == Time.now
# => Song.find(3).updated_at != Time.now !!
```
Given you have a comments model with a polymorphic commentable association (e.g. books and songs) with the touch option set. Every time you update a comment its commentable should be touched.
This was working when you changed attributes on the comment or when you moved the comment from one book to another. However, it was not working when moving a comment from a book to a song.

**This is now fixed**: I added failing tests for the missing case and made them pass. However, the code is not the nicest. So, improvement suggestions welcome!