Eventification

@winhamwr @mightyiam 
Ok, this may be a bit premature, but there's enough going on here I want to get some feedback before I go too far down the rabbit hole...

So the idea here is, wrap certain blocks of code within a listener. Then immediately trigger the corresponding event.  This should in theory allow the user to attach their own event listeners that would most likely execute BEFORE the internal event listener.  This may not be desired in some cases, or it may not be desired at all... you tell me.

There are some events that are just triggered, not wrapped in listeners (insertTable, paste... some others...). It seemed to make sense to me but it's also late where I am and a bit tired :P

This is all very rough so keep that in mind but don't hold back, if I'm way off base better tell me now!

Also, let me know how you feel about this, but when I write custom events, I structure them like this: `prefix:event`. Examples: `wym:update` `wym:initSkin` `wym:openDialog`. It looks better to me than `wym-openDialog`, so that's one man's opinion :)
Timing/race conditions are the biggest challenge right now, and the events you named are some that I had a hard time wrapping my head around. In particular, I could not visualize a way to have a preOpenDialog and postOpenDialog event.  I will spend more time and dive a bit deeper into these processes and see if I can unify the event model a bit.  Thanks for the input, I'll get another commit ready soon!