Better key-value observing for Cocoa