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.
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.