An implementation of the KVO pattern, inspired by Google Maps API v3 MVCObject class