Resource Management Overhaul

The resource classes have been split into "data" and "handle" classes.
Data classes are containers for actual data, and handles are proxies to OpenGL objects.
For example, the Image class holds pixel data, and the Texture class is a handle to an OpenGL texture, which can be constructed from an Image.

There is no longer a SharedBank to keep track of resources. Resources have automagical copy and move semantics.
Keeping track of the loaded resources is the user's responsibility.