observer mechanism

John,

It seems that ScalarMappable in cm.py, Artist in artist.py, and Button in widgets.py all have quite similar observer functionality, with some variable and method names in common and some not. None of this functionality seems to be used very extensively (a conclusion based only on a little grepping), but it is very important where it is needed.

I made a quick fix to colorbar so that its alpha would track that of a ContourSet to which it is attached, in response to a bug report, but I think more extensive change is needed to make the colorbar track everything that it should, and I think this would be facilitated by abstracting the notifier/observer functionality into a very small mixin class (probably called Notifier). Ideally this would make the fuctionality less confusing (to me, at least) and easier to use in general.

It is likely that I am missing something--maybe a lot of things--so I wanted to get your thoughts before proceeding.

Thanks.

Eric