Images are stored on the device side. Texture2D and MipMap are now only used to store imformation about the texture and reference to the device image.
This fixes byte order interpretation in several places.
This extracts the sampler functionality into its own class. Beginning with OpenGL 3 samplers are actual objects, separate from textures. It makes sense to do this already as it also cleans up code organization quite a bit.