CopyOnNotifyObserverSet questions

There is an asymmetry in method names. All of them have an `observer` in their name but only `add_observer` has an additional alias (`add_watch`). So you can `add_watch` but only `delete_observer`.

Would it make more sense to add more aliases or remove this one?

 
Also I've wondered about a default `:update` name to call. If instead you'd choose a `:call` value then a lambda or proc could be passed to `add_observer` directly.

Or as alternative `add_observer` could check if it's given a block and then assign the block as an observer and `:call` as a func.