Change the check for NSObject so we don't use a non-checked string.
Added tests to check for observation stop on target dealloc with nil observer.
Since observer can be nil, synchronize on willChangeBlock or didChangeBlock instead.
Refactored early returns again.
Relaxed the deallocation test a bit to account for chain deallocations.
Removed use of NSKeyValueObservingOptionInitial.
Added back the assert on stack depth.
Merge branch 'nil-observer' into racobservablepropertysubject-custom-keypath-handling
Slightly better assertion failure message
Merge branch 'nil-observer' into 2.0-development (pull request #569)
Commented RACObservablePropertyObserving.
Commented RACObservablePropertySubject.
Add -[NSInvocation(RACTypeParsing) rac_allArguments]
Go deeper into the `-rac_signalForSelector:` rabbit hole

Using the relatively unknown and previously private `_objc_msgForward`, this
change allows `-rac_signalForSelector:` to create signals for a wider variety
of methods, including existing methods, and methods with more than one argument.
Handle when forwarding is already installed in `-rac_signalForSelector:`
Use rac_forward_ prefix for forwarding alias
Refactor -rac_signalForSelector: to adopt a runtime proxy subclass

With this change, calling -rac_signalForSelector: will cause the receiver to
adopt a proxy subclass, creating one if none exists for its class. This proxy
subclass is where changes are made to the dispatch table. The proxy subclass
will always have an implementation of -forwardInvocation: which is defined by
RACSignalForSelectorForwardingIMP. Additionally, the proxy subclass will have
one or more of its parent methods redefined to point to _objc_msgForward to
allow -forwardInvocation: to intercede and send nexts to the appropriate
subjects before forwarding to the original implementation.
Deduce signature of non-existant method from selector component count
Refrain from dynamically subclassing a KVO dynamic subclass

Do not create a dynamic subclass when calling -rac_signalForSelector: on an
object that has been KVO'd and thus already has already been assigned a dynamic
subclass. In this case, perform the required swizzling on KVO's dynamic
subclass.
Add tests to confirm -rac_signalForSelector works on KVO'd objects