Instead of having lots of duplicate code for drawing text to overlays
and the background, move all of the actual drawing logic to a generic
routine that can be used to draw text to *any* type of framebuffer.
Using a LIFO stack for events was a dumb idea in the first place, this
should've been a FIFO queue from the beginning.
This allows the system to respond to events in the same order that they
are generated, instead of always responding to the newest event first.