This is an initial implementation using the same single-pass approach as the RenderingDevice.
As well as significant consequent cleanup in the RenderTarget, Texture, and Canvas renderer code