An Objective-C class that makes it easy to add protocol-based observation to any class