Added BelongsTo::dissociate()

This is #3326 retargetted at the current stable branch. The original author's name has been retained since it is still technically the same commit. I've just done some rebassing to get this to work.