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 :)
I'm not sure how that got in their... my local copy shows spaces not a tab. It will be fixed with next commit.