Retain object over -setValue:forKeyPath:
Conditionally use a weak reference in -setKeyPath:onObject:

But only if the object's class does not override -allowWeakReference. If
-allowWeakReference is overridden, take that as the canary in the coal mine and
don't use a weak reference.
Revert "Conditionally use a weak reference in -setKeyPath:onObject:"

This reverts commit 2bc6eff66836294480f36c980dd55b18a401cab7.
Add __strong for explicitness and defensisveness
Comment on objc_precise_lifetime attribute use
Test object lifetime for -setKeyPath:onObject:

This included test will fail prior to c0013d4.

The use of sleep and delayed async doesn't seem ideal, but an implementation
using locks was intermitently crashing because it made retain of the implicit
unsafe_unretained more likely.
Mr. Clean, right behind you
Document thread-unsafeness of -setKeyPath:onObject:
Reword comment for clarity?
Merge pull request #1184 from ReactiveCocoa/retain-for-setKeyPathonObject

Retain object over -setValue:forKeyPath: