1) Support dma-buf memory management.

In order to zero-copy import camera images into the 3D or display
pipelines, we need to export our buffers through dma-buf so that the
vc4 driver can import them.  This may involve bringing in the VCSM
driver (which allows long-term management of regions of memory in the
space that the VPU reserved and Linux otherwise doesn't have access
to), or building some new protocol that allows VCSM-style management
of Linux's CMA memory.

2) Avoid extra copies for padding of images.

We expose V4L2_PIX_FMT_* formats that have a specified stride/height
padding in the V4L2 spec, but that padding doesn't match what the
hardware can do.  If we exposed the native padding requirements
through the V4L2 "multiplanar" formats, the firmware would have one
less copy it needed to do.

3) Port to ARM64

The bulk_receive() does some manual cache flushing that are 32-bit ARM
only, which we should convert to proper cross-platform APIs.

4) Convert to be a platform driver.

Right now when the module probes, it tries to initialize VCHI and
errors out if it wasn't ready yet.  If bcm2835-v4l2 was built in, then
VCHI generally isn't ready because it depends on both the firmware and
mailbox drivers having already loaded.

We should have VCHI create a platform device once it's initialized,
and have this driver bind to it, so that we automatically load the
v4l2 module after VCHI loads.

