DMA-enabled dfmem to supercede current one

This branch includes the auto-geometry changes recently merged into master and its API is compatible, so the merge is rather trivial once fully tested.

However, there's a couple pending issues to resolve before this can happen:

1. spi_controller.c, which provides the SPI+DMA functionality, has a hard-coded page size (currently set at 528) for its DMA buffer. We should allocate this value dynamically, similar to how the auto-geometry works in dfmem (probably by making dfmem manage the allocation), or we should allocate the max size and use the necessary buffer dynamically by maybe querying the page size from dfmem (less ideal as we'd be throwing away RAM when smaller chips are used).

2. Some write functions are blocking on write in a way that wastes time and slows down communication by disallowing the use of the second buffer effectively. This needs to get fixed before we can merge it into master because, even if DMA is supposed to speed up communication, the blocking write is less-performing than the one present in the current dfmem.

Once these issues are addressed, we'll go ahead and merge this pull request. Please comment if you find any other issues with the module.