Added basewidget, eventmanager, and rootlistener.

Also heavily modified the Listener object. After a little thought and
reflection, I'm planning on using networkx (a pure python implementation
of graph data structures) to handle widgets and possibly some other
things (like searches). I want the implementation to be light, in case I
ever decide to switch networkx out for something faster.