Separate class for OpenGL resource mgmt

Reasons:
    These are largely static, will be easier to make it thread safe
        if all the unsafe stuff is in one class
    Sprite class more readable
    Sprites are not conceptually responsible for managing their textures