Add Desktop interface -- new game loop

Since 2D Desktop (with Gosu) takes control of the program inside
the @window.show, the same approach must be used in the other
interfaces.

The code is not that complex, and can still be improved by extracting
common code among interfaces and games