major refactoring of observations and events:
- memory management was still not working correctly.
- new method signatures, more verbose Class.new { } syntax required
to create opaque block-like objects.
- use native NSKeyValueObservingOptionInitial instead of calling the block
immediately ourselves
- observations fire inline if the main thread os handling them, otherwise they
dispatch to the main queue
- events always fire in the main dispatch queue (not 100% it will stay this way,
or do the inline/dispatch pattern like observations)
- observation callbacks now receive a ObservationResponse object as their only argument
- event callbacks now receive an EventResponse object as their only argument
- rmext_trigger now accepts a key and value, not N values
- lots of blocks removed in favor of while x = y.pop style (dealloc-friendly syntax)
bump