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 mean cancel the addition of the element.

i.e.
a = EventfulList()

Use on_add to register a handler.

a.append('Z')

Then the handler would be called and the handler has the power to prevent the item from ever being added to the list.