KVO via singleton proxy, redux

Continuing @rspeyer's KVO proxy implementation from #1276 

Firstly, this pull request is to bring @rspeyer's changes up to date with `master`. This will mainly be updating the tests from Specta to Quick. Beyond that, perhaps `RACKVOProxy` and `RACKVOTrampoline` will be unified.

cc @epatey @modocache

About one out of ten times or better, I would get a crash at this line, but with the crash on another thread. [Stack trace](https://gist.github.com/kastiglione/e504b7bd4cd26354d3d7). I'm going to try to figure out what's causing the crash, which may slow this diff down.

It was an interesting lesson learned though. When assigning to an observed property from another thread, it leads values being sent on that thread. If the observing signal has operators that go through `-bind:`, there will be "unexpected" async subscription from `backgroundScheduler` via the `subscriptionScheduler`.