[refactor] redesign DMAs to support layouts
Refactor the DMA API to work on layouts internally. The resulting code ends up simpler for most cases, as long as we add a generic copy function.
One things missing:
- a good API to expose the collection of copy functions we have.
One question not solved:
- should the DMA ask for a copy function on each operation ?
Closes #46 (closed)