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.
You may wanna move "TlutFormat tlutfmt = (TlutFormat)texTlut.tlut_format;" to void sample mip and then change (TlutFormat) texTlut.tlut_format to tlutfmt in order to match.