Data Structures Overhaul - Initial Cleanup

  GOALS:
    - separate model data from OpenGL specifics
    - avoid loading a texture more than once