Implement singleton RACKVOProxy

Per the discussion in https://github.com/ReactiveCocoa/ReactiveCocoa/issues/1122 (primarily comments and suggestions by @epatey), this branch adds a singleton ```RACKVOProxy``` which acts as an intermediate between ```RACKVOTrampoline``` and the actual KVO-observation to help mitigate various lifetime-related crashes, whose details are outlined in the aforementioned issue.

I have also included a set of tests for this new functionality, some of which may be duplicative to other tests in which case I am glad to remove them. One of the tests is the example code from #1122 which crashes 100% without this proxy code.