Add EventfulList and EventfulDict trait types.

**Lots** of useful applications in Widgets.

The events are designed to catch all of the modifying methods of the list and dict objects.  The following methods exist to register handlers:

EventfulDict members:
- on_add
- on_del
- on_set

EventfulList members:
- on_insert
- on_del
- on_set
- on_reverse
- on_sort
I don't feel strongly one way or the other. On the one hand, if other callback interfaces allow multiple functions, it's a bit surprising if this one doesn't. On the other hand, if you're getting information back from those callbacks (i.e. should we allow this operation), it quickly gets much more complicated with multiple functions.