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

Which access exceptions? The talko fork has these as `nonatomic`.