block: blk_rq_set_block_pc overwrites __data_len

Drivers that issue REQ_TYPE_BLOCK_PC command, calls blk_rq_map_kern() before
the command is intialized to REQ_TYPE_BLOCK_PC. As blk_rq_map_kern() increases
rq->__data_len, and blk_rq_set_block_pc sets it to zero. Results in a zero
request being sent to hw.
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>
  Christoph Hellwig <hch@infradead.org>
  Robert Nelson <rlnelson@google.com>
NVMe: no need to check for null nvme queue

It fails fine afterwards with the nvmeq->hctx call.
NVMe: remove cpumask
NVMe: free nvme after its been taken offline
blk-mq: uninitialized queue in blk_mq_queue_enter

When a queue haven't been fully initialized as a gendisk, its
QUEUE_FLAG_INIT_DONE isn't set and leads to a panic on hotplug removal.
NVMe: add support for chunk size