Hi Valyard, thanks Alex =)
The reason why I reinvented the wheel here is simple: it was the only way to do it.
My plan was, from the beginning, to use the original Flash EventDispatcher class for events, and let Starling DisplayObjects inherit from that class. This was very important for me, and I struggled with it for at least 2 weeks. But it turned out that it is simply not possible. Flash events can only bubble over Flash display objects, but not over other classes. That's just not part of their design.
And bubbling is an immensely useful feature; Starling relies on bubbling events throughout its architecture. So, after 2 weeks of struggling, I gave up and reimplemented the system. I was just as annoyed by that as you are, Valyard -- but it was the only possible solution.
Concerning the IEventDispatcher interface: since that implementation does not support bubbling anyway (remember, bubbling can only occur over flash display objects), it makes no sense for Starling to duplicate that; if you need the interface, you can use the conventional event system.
I hope that answers your question!