OPENGL: Add new generic OpenGL (ES) backend.

This backend is based on ideas of the old OpenGL backend, of the Android GL
backend and of the iPhone GL backend.
SDL: Add a OpenGL SDL backend and hook it into the SDL backend.

The hooking code is nearly exactly the old hooking code. Only the OpenGL SDL
creation has been adapted since it uses a different constructor now.
OPENGL: Add OSD support.
SDL: Use OSD in OpenGL SDL backend.
OPENGL: Implement dirty rect handling.
TIZEN: Adapt to new OpenGL code.

Thanks to Chris Warren-Smith for testing this a bit.
BASE: Add hack to switch graphics manager in runGame.

This is a (temporary) hack to assure that when the launcher is set up as an
SurfaceSDL graphics mode and the game is using an OpenGL graphics mode
everything will work as expected.
SDL: Send EVENT_SCREEN_CHANGED after receiving SDL_VIDEORESIZE when necessary.

This fixes some ugly crashes when resizing the window in OpenGL mode.
OPENGL: Limit maximum Surface size to maximum texture size.

This is mostly aimed at old graphics chips. For example, wjp's old laptop
only supports 1024x1024 textures but has a 1280x800 screen. Switching to
fullscreen would create a bigger overlay than supported. Now it will get
limited to an smaller resolution and then scaled too.

Alternatively we could think of tiling surfaces into textures. But then
handling scaling would be more complicated since it might result in
artifacts on texture tile borders.
GUI: Check for screen change whenever an event is polled.

This should *hopefully* really fix all GUI crashes when resizing with OpenGL.
TIZEN: Add some further OpenGL related changes by Chris.
OPENGL/SDL: Add screenshot support.