Preparing for the Virtio PCI/Virtio-net split.

 * Instead of using IOMbufMemoryCursor to generate the scatter-gather list, we now use an IODMACommand.
 * The IODMACommand sadly doesn't support combining mbuf ranges like the cursor did, but if we need that functionality for performance tuning later, we could actually run the mbuf through the memory cursor and then through the DMA command.
 * For the IODMACommand to support mbufs, I've created a new type of memory descriptor for wrapping the mbuf.
 * To submit the DMA to the virtqueue, combine both header and mbuf into one combined memory descriptor (using SSDCMultiSubrangeMemoryDescriptor), and generate the scatter-gather list for that.
 * Cleaned up namespacing a bit.