sunxi-g2d: Support overlapped copy for ARGB8888/XRGB8888/RGB565 formats

When scrolling or moving windows in the X server, source and destination
pixel buffers are typically overlapping. Overlapped blits need to be
supported in order to make G2D useful for accelelating such operations.

This patch moves handling of common ARGB8888/XRGB8888/RGB565 formats
into a separate function and also fixes a few other issues:
1) The code in the original mixer_blt() function from G2D driver
   unnecessarily configures DMA fetch from the destination buffer in
   all cases. This is a waste of memory bandwidth for simple copy. In
   the case of 32bpp copy we get the following performance improvement
   (the numbers are for blanked screen) by disabling destination fetch:
      before: G2D blit performance: 185.75 MPix/s (743.00 MB/s)
      after:  G2D blit performance: 228.61 MPix/s (914.44 MB/s)
2) Simple copy "RGB565 -> RGB565" was corrupting data because of
   the rounding on "ARGB888 -> RGB565" conversion step (the whole
   pipeline looks like "RGB565 -> ARGB8888 -> RGB565").

Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
sunxi-g2d: Fix mismatch between request_irq and free_irq

The dev_id argument must be the same for both, otherwise we run
into problems when unloading "g2d_23" module.

Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>