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.