Screen/PixelOperations: make variadic constructor "explicit"

Avoid implicit conversion.
Screen/PixelTraits: make all methods "static"

Don't require an instance to invoke the methods.
Screen/PixelTraits: mark loop methods as "hot"
PixelOperations: don't derive from PixelTraits

This base class is not necessary anymore, because all PixelTraits
methods are "static".
Screen/PixelOperations: remove unused class TransparentTextPixelOperations
Screen/PixelTraits: add method IsBlack()
Screen/PixelOperations: don't pass template to {Un,Bin}aryPerPixelOperations
ScreenPixelOperations: don't derive from PixelTraits (2)
Screen/PortableColor: add operators "==" and "!="
SDLCanvas: add method ImportColor()

Prepare for future extensions.
SDL/Canvas: cast to SDLPixelTraits::const_pointer_type

Don't hard-code the pointer type.
SDL/RasterCanvas: apply pitch properly

SDL_Surface::pitch is the number of bytes per row, not the number of
pixels.  So far, this was not a problem, because RasterCanvas was only
used for greyscale (1bpp) surfaces.
Screen/PixelOperations: add "source PixelTraits" template argument

Allow copying from a different pixel format.
Screen/PixelTraits: add integer and per-channel operations

Prepare for multi-channel colors.
Screen/PixelTraits: use Luminosity8 instead of uint8_t
Screen/PortableColor: add class BGRA8Color
SDL/Canvas: use RasterCanvas for 32 bpp color

Add BGRAPixelTraits and remove a few of the "#ifdef GREYSCALE".  Now
SDL_gfx is not used anymore.
OLCTriangle: better approximation of min and max distance

Reduces the number of needed iterations by 40% and memory
consumption by 30% in some cases.
BenchmarkTriangleSolver: add benchmark for the triangle solver only