GLFW utility functions for use with monad-task.
See Invert the Inversion of Control for a tutorial on writing a GLFW/OpenGL application using task monad.