block: support scatter/gather lists without holes

The NVMe driver PRP data structure requires that request scatter/gather
lists are without holes.

Implement a new QUEUE_FLAG_VIRT_HOLE flag, that allows drivers to only receive
continuous scatter/gather lists.
NVMe: convert to blk-mq

This converts the current NVMe driver to utilize the blk-mq layer.

Contributions in this patch from:

  Sam Bradshaw <sbradshaw@micron.com>
  Jens Axboe <axboe@kernel.dk>
  Keith Busch <keith.busch@intel.com>
  Christoph Hellwig <hch@infradead.org>
  Robert Nelson <rlnelson@google.com>