Render type

Introducing a render type, also extracting Canvas common code.
Also, a fix in SideBySideCanvas::srcCopy for GrayscaleDepthBitmap bitmap
Filling (without shading)
Introducing shader
Pushing the shader from camera to canvas
Redesigned the If template

Now it's possible to link them to say (simplified)
If< is_<ICanvas>,
choose<canvas>,
If< is_<SomethingElse>,
choose<something_else>,
choose<rest>
>
>