Issue events

@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!