Change callbacks to use after_commit

The callbacks for indexing and notification have been changed from
`after_save` to `after_commit` to ensure indexing does not occur
before a transaction is committed. In order to make tests work,
we had to change the specs to use database_cleaner.

In an effort to cleanup some of the smells in the notification
library, we added the DependentAssociations class and delegated
messages to the class for both DependentAssociations and
Notifiable Associations.
Fix merge conflict