Textures allocated with no path (e.g. the transition image which uses
copyScreen()) weren't being deinitialized with the renderer. Which meant
something else could take the old texture ID, and when the no-path texture
got destroyed, it would take a texture along with it.
Moved Opacity logic from ImageComponent to GuiComponent so any extender
of GuiComponent che implement its opacity logic.
Implemented Opacity logic for TextComponent (now text can have fade
animation)
The ResourceManager provides a unified interface for accessing resource
data, embedded or from the filesystem, with
initialization/deinitialization handled automatically behind the scenes.
It also keeps from creating duplicate resources (e.g. when two
ImageComponents use the same image file).
Audio still needs to be moved over to it.