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>
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.
NVMe: request timeout/abort cleanup

Returning BLK_EH_HANDLED from the timeout handler isn't the right thing
to do since the request isn't completed by the driver in line with this
call and returning this from the driver caused the block layer to return
success though no completion occured yet, so it was lying.

The abort_completion handler shouldn't be trying to do things for the
command it tried to abort. It could have completed before, after, or
still be owned by the controller at this point, and we don't want it to
be making decisions.

When forcefully cancelling all IO, you don't want to check if the device
is initialized before doing that. We're failing/removing the device
after we've shut her down, there won't be another opprotunity to return
status for the outstanding reqs after this.

Additionally, this provides a way to synthesize a failed
controller by using the sysfs pci/devices/<bdf>/reset. I just have the
device removed from the polling list so we don't accidently trigger a
failure when we can't read the device registers.
NVMe: style fixup