abstracted TextureData object, tidied up TextureProxy classes, enabled function overloads for gl textures