Clean up the TextureDecoder and some related things

Reduce the amount of shared code we have a little bit, and also start cleaning up the interfaces.

I eventually want to see if I can put our texture decoder somewhere like in Core/ or Common/ so we can use it for reading out memory card and banner images, too.
Why? It's the software renderer, I don't give a shit about it.