Data Structures Overhaul - Textures

  - Mesh has a pointer to it's Texture
  - Assimp loads and transforms models such that a mesh has a single texture
  - load just once a texture even if it is referenced by multiple meshes
  - separate model data from OpenGL specifics