Pulled the shader code out into its own class and added support for loading shaders from external files. Also added a resource holder for the GLFW window to avoid having to destroy it