SDL: add support for SDL2

As the title says, this set of patches adds initial support for SDL2.
The commit messages for each patch should contain an explanation to deficiencies
in the related areas, but one thing that is not mentioned is that this does not contain support
for explicitly using OpenGL (although it might be the actual backend SDL2 is using to render).

Also, some of the changes might be considered a bit of hacks (the compatibility defines for an instance),
so I'm certainly up for discussion on how to improve on cleanliness.

I've tested the changes on a normal Linux machine, and as far as my tests goes, the changes are
at a state where they are usable (albeit experimental).
You're right, but the situation is a bit messy...
"UCS-2" afaik is defined to return big endian, but in reality that's not the case.
iconv (which you rightly assumed is used on my machine) returns the "right"
result regardless of the target endian.
Now to the fun part, SDL's implementation that get used when iconv
isn't available do return the result as big endian for "UCS-2".
(see https://hg.libsdl.org/SDL/file/f6355bfca853/src/stdlib/SDL_iconv.c#l152)
Now, they obviously realized that and changed SDL_iconv_utf8_ucs2() to use
"UCS-2-INTERNAL", which their own implementation now supports.
(see https://hg.libsdl.org/SDL/rev/4032f8efdfe7)
Unfortunately, as you noticed too, iconv doesn't support that...

I'm definitely open to suggestions for a better solution than the one above,
and even if the decision is to keep it, it would deserve a better comment.