add alternative MMC driver and support scatter/gather transfers in dmaengine

this also expands the upstream BCM2835 dmaengine driver and will theoretically replace it