block: support continuous virtual address merges

The NVMe driver PRP data structure only supports request that have a single
continuous virtual memory range. Extend the block layer merge routines to
support this behavior.
NVMe: conversion 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>
NVMe: limit requests to a continuous range of virtual memory

The NVMe PRPs limit a request to be a single continuous virtual memory
address. Set QUEUE_FLAG_VIRT_HOLE to let blk-mq issue only valid
requests.