SDLSurfaceSprite2D: apparently constructors can have default arguments

lets use that instead of having 2
Sprite: move freePixels ivar to base

pixels is assumed to be owned by the base class unless freePixels is false
Video: Migrate generic methods to base

there is no point in overriding these methods
Sprite/Video: create some SDL_surface manipulation methods

SDLSprite only has its surface to worry about and SDLVideo has many so lets have the surface manipulation be part of SDLVideo instead.
make SetSurfacePalette, SetSurfacePixel, and GetSurfacePixel static methods of SDLVideo class.
Sprite: modify get/set colorkey methods

if a sprite is paletted then the colorkey is an index to the palette, otherwise the colorkey is a pixel value
We should probably consider adding a method to set colorkey with a Color struct, but we currently have no need
SDLSurfaceSprite: be compatible with bpps less than 8
SDLSurfaceSprite: copying the flags will set RLE

RLE memeber is always false anyway so this would likely prevent it.
Video: convert sprite pixels to display format

remove the old (unused) ConvertToVideoFormat method in Video and have the CreateSprite method automatically convert the sprite
GetScreenshot: create the surface sprite directly

avoid calling createsprite so we dont do unnecessary pixel conversion
SwapBuffers: generalize cursor/tooltip drawing

should re-enable both on SDL2 dirver.
Video: move sprite mirroring logic to base
SDLVideo: update for SDL2 api change

the unicode field is removed from the keysym struct
add missing break