Implement NoGameWindow

This provides a dummy NoGameWindow, which allows us to have a game loop without actually having any window, which is useful for things such as running servers, and writing tests.

Fixes #617