SDL_LoadBMP and colour mouse cursors working

This fixes SDL_LoadBMP and SDL_CreateColorSurface (plus a couple of other cleanups), and is enough for me to be able to load a BMP into a surface, and then use that as the mouse cursor. The SDL_Surface struct looks like it's filled out correctly, so it seems that things are actually working!