Bring back the sg_dma implementation on amd64

This partially reverts commit 4e421001cbc95ada6df0a1b7da93e80366f2df3c.

We are going to need this for iommu implementations.
sg_dma: use extent_alloc_subregion_with_descr()

This is a similar change as done by kettenis@openbsd to sparc64's iommu.