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 stopped and thought about that while writing this too.  If I was too implement multiple events, the design pattern I'm familiar with is the one in traitlets with the funky `remove=False` kwarg- I'm not too fond of that design pattern so I decided to stick with a single callback system.  I think either nbconvert or the widget framework has a nice callback dispatcher class, I could use that here...  Just let me know if your vote is for multiple events, because I could sway either way.