Lots of internal changes.

Method-swizzling has performance issues when applied to hundreds of methods at once, so Observable now uses isa-swizzling, like what Apple's KVO does. Doing isa-swizzling in a way that doesn't interfere with Apple's KVO, however, is something of a challenge.

Also fixed an issue that appears when an observer calls stopTellingAboutChanges: from within their dealloc method. In this case, the __weak observer ivar returns nil because the weak value is loaded with objc_loadWeak(), which returns nil for objects being dealloc'ed. However, we need the actual pointer for the object being dealloc'ed in this case, as we need to use it to compare against.

Streamlined the code that gets selectors for property getters and setters. It's somewhat more efficient now.

LazyLoader has an experimental loaderBlock method, although it's not ready for prime time.

EBNObservableSet had its keyForObject: method changed into a class method; this works a bit better.

The docs were updated, and got a bit of a style boost.