Screen/PixelTraits: add "rpointer" typedefs

.. instead of attaching the "gcc_restrict" to the rpointer.
Screen/PixelTraits: use union to cast color_type/integer_type

.. to make it truly "constexpr".
SDL/Color: remove obsolete method GFXColor()
Screen/Canvas: don't use PixelScalar for parameters

This reverts commit 5b6af5a2.  It was a bad idea because using "short"
integers for calculation adds some overhead.
SDL/Canvas: reimplement CopyTransparent*()

Add TransparentPixelOperations to replace SDL_SetColorKey().
SDL/Canvas: don't use SDL_BlitSurface()

Use RasterCanvas::CopyRectangle() for everything.
SDL/SubCanvas: remove clipping

This has become obsolete since the introduction of RasterCanvas.
SDL/Point: use regular integer for PixelScalar

Reduce overhead, and allow casting RasterPoint to RasterCanvas::Point.
SDL/Canvas: cast RasterPoint to RasterCanvas::Point

Eliminates the variable-length array, which makes clang happy.
OpenGL/TextCache: move to Screen/Custom/

Prepare for making it generic.
Custom/TextCache: add macro HAVE_TEXT_CACHE
Screen/TextCache: pass Font reference to Get()
Screen/TextCache: remove unused ListHead base class
Screen/TextCache: include cleanup
RasterCanvas: fix out-by-one error in clipping.

The destination is width-1 / height-1, not width/height.
SDL/Canvas: fix crash in DrawTransparentText()
SDL/Canvas: compile with -O3
Screen/TextCache: use on SDL

Reuse the existing OpenGL text cache library.  This reduces the CPU
usage by about 40%.
SDL/Canvas: reimplement DrawFilledRectangle() using RasterCanvas
Screen/SDL: remove obsolete class HWColor