DMA synchronization
DMA synchronization

Similar to other synchronization functions, this primarily moves the
functionality of `dma_tick` into `dma_synchronize`, but allows multiple
ticks to be executed.

This doesn't pay off quite as much as other cases, since it requires
synchronization at every memory read and write. It's still better than
being in `tick`, though.

binji/binjgb,binji/binjgb,binji/binjgb