Fixes deleting targets whose owner does not mixin DestroyedAt

Fixes #46 

Guards for when a target association's owner does not mixin DestroyedAt. Previously, `undefined_method` exception was being raised.

Attempts to DRY up some of the shared code for our association code by implementing `DestroyedAt.destroy_target_of_association`.
I'm not entirely sold on this concept. Generally broken builds should never be pushed to master. Having broken branches is OK if someone wants to PR a failing test to demonstrate an issue.