Add UI event subsystem

Right now, there is just one concrete event type called UIShownEvent
that fires when UIService#showUI is called.