Make TWTKeyValueObserver retain targets before messaging them

@prachigauriar @jnjosh please review
I'd move this outside the diagnostics as the only reason you need to ignore retain cycles is for the sampleObject change above.