With GLFW3 dropping time functions, I've expanded this to include a random and a time header