MapDrawHelper: hard-code alpha blending on SDL

If we don't have hatched brushes, we can't do it any other way.
AirspaceRendererSettings: disable the "transparency" flag on SDL
Screen/RasterCanvas: narrow template parameters

Pass and copy only the PixelTraits object, not the whole RasterCanvas.
Screen/RasterCanvas: add method ScaleRectangle()

Backend for Canvas::ScaleCopy().
SDL/Canvas: reimplement InvertStretchTransparent() using RasterCanvas
SDL/Canvas: reimplement StretchMono() using RasterCanvas
SDL/Canvas: reimplement DrawOutlineRectangle() using RasterCanvas
Screen/RasterCanvas: use PixelOperations for single pixel
Screen/RasterCanvas: add method DrawCircle()
SDL/Canvas: don't use SDL_gfx for DrawSegment()

Use our own custom Segment() function, which does exactly what SDL_gfx
does: generate a polygon and draw it.
SDL/Canvas: add class SDLRasterCanvas

Simplified RasterCanvas constructor.
SDL/Canvas: implement RasterCanvas clipping

Pass the clipped buffer from SDLRasterCanvas to RasterCanvas.
SDL/Canvas: implement CopyOr/And/NotOr() in RasterCanvas
Makefile: don't link SDL_gfx if GREYSCALE=y

We have replaced all drawing functions in the greyscale build.  We
don't need SDL_gfx anymore.
SDL/Canvas: move code to RenderText()
SDL/Canvas: implement FREETYPE=y with SDL
Util/UTF8: add function NextUTF8()
Screen/FreeType: support UTF-8
Screen/FreeType: implement kerning
FreeType/Font: make thread-safe

libfreetype is not thread-safe, we therefore need to protect some
libfreetype calls with a Mutex.