Fixed self-drawing of 2D canvas with accelerated 2D canvas enabled.

The canvas 2D API allows drawing the canvas onto itself, however with
accelerated 2D canvas enabled the canvas is implemented in terms of
rendering to a texture using framebuffer objects. OpenGL does not allow
having the same texture be both a source and a destination in the same
rendering operation, so the results are undefined.

Instead, we need to blit the texture into a temporary framebuffer
object, before using that as the source of the final drawing operation.

Task-number: QTBUG-42275
Change-Id: I8114814dab2c8c6ca90b8d35a37b383b79923cb3
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Fixed upside down drawing of accelerated 2d canvas

The convention used by the Qt OpenGL paint engine's internal
drawTexture() function didn't match the texture layout of the
accelerated 2D canvas. We need to adjust the coordinates according to
whether flipped painting is in effect.

Task-number: QTBUG-42376
Change-Id: I787a2deb5f26df532f2e7c475754f0fd2189132c
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>