iMX6 VPU: Use a DMA allocation pool, instead of kernel default allocator

This resolves problems with allocating physical memory for DMA transfers.
By default, the kernel dma_alloc_coherent() method returns the first
available block that is big enough. This inevitably leads to fragmentation,
since the VPU requests blocks of very varying sizes (80k -- 5M), and
eventual failure to find a large enough block.

With this patch the VPU driver keeps a number of blocks cached.

The drawback of this patch is that DMA memory gets tied up inside the VPU
driver, and never freed. The size can be limited by the ARM_DMA_ZONE size
define in memory.h. There are also limits on the number and sizes of
blocks cached (and unused blocks beyond that are not cached but freed).

(cherry picked from commit 7cbd06b2904c1855109084ca6b0c84990bc69233)