expand functionality by supporting scatter/gather transfers

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