Completely worked out how to deal with texture animation and sprite textures:

TextureMovie - derives from Texture
 - isAnimated() - returns true
 - getFrames - decodes all frames and returns them as individual textures. Make a note that this is an extremely slow process. For normals textures it just returns self.
    - I will need this when providing a texture to SpriteGenerator among other things, so it may extract frames an generate an atlas (although I don't expect this will be 
	  needed for actual movies, I want to keep the functionality the same for all textures)
 - getBindableTexture() - texture used by RenderSystem. Normal textures just return self, while animated textures return the current frame
 - DOES NOT support sprites (i.e. multiple textures from a single atlas, only multiple separate textures)
 - TextureMovieTheora decodes textures on the fly
 - TextureMovieRaw is created from a bunch of normal textures (using some utility method)
 - play/stop/rewind/setSpeed/move(+/- frameCount)

SpriteTexture
 - Inherits from Resource
 - Replace all references to it using shared_ptr with handles
 - How do I create it?
   - From native code allow a constructor that accepts a single texture (no atlas)
   - And another constructor that accepts an uv an atlas
 - Can contain sprite animation
   - Some constructors accept a list of uvs, list of pages (referencing an atlas), a list of atlases and FPS
    - (Need multiple atlases as some animations might be lengthty)
   - Will have play/stop/rewind/getTime()/etc. methods
 - It is up to the renderer to use animation data.
   - GUIManager will be modified so use animation data if it exists
 - For use in Scene I may add a special SpriteRenderer that uses certain logic and a certain material which supports sprite animation

SpriteGenerator
  - generateAtlas: Accepts a list of textures and outputs a list of SpriteTextures and a texture atlas
  - generateSpriteAnimation: Accepts a list of textures, and generates a single SpriteTexture with a set of UVs and FPS
  - All of them must be manually saved using Resources::create if they are to persist


TODO - How to handle animating uvs?
 - Things using animated textures will need to manually set the uvs every frame?