Using a stroke font

GLUT's bitmap fonts are strangely unresponsive to matrix
transformations, making them unusable for displaying more than one line
of text at a time. GLUT's stroke fonts suffer from the opposite problem:
they require matrix scaling in order to display anything, because the
default font size is much larger than the window size.
a timeout event

The interface for timeout events is exactly the API we are looking for.
rename and reorder

now it feels more like a sequence of actions than like a main loop and
an event handler.
withKeypress

By hiding the callback-assignment inside a cps helper method, key
presses can be handled in the style we are aiming for.

This style really ought to have a name. "IO style"?
withGlutMain

hiding the other callback assignment inside another wrapper.
reset the assigments as early as possible

Otherwise an old callback might be called when the user doesn't expect
it. The IO style makes it look like only one event at a time is being
waited upon.

Of course, waiting for only one event is a silly restriction, we'll just
have to come up with a different interface for doing it.
refactor to library

Those two helper functions turn callback-assigning code into IO-style
code, which is precisely the goal of this library.