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 think it's worth having named parameters, rather than taking an arbitrary list and matching them up with names in application code. You're really just reimplementing argument binding.

This would also let people pass the callbacks as keyword arguments.