Use weak references in KVO observation

Hopefully fixes #1206 and #1548.
You might consider casting to id for the receiver, so you can still pass protocol-typed targets, where the compiler can't figure out that `rac_valuesForKeyPath :observer:` is implemented.