NVMe: basic conversion to blk-mq

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

Outstanding work:
  - Abortion of I/Os

Contributions in this patch from:

  Sam Bradshaw <sbradshaw@micron.com>
  Jens Axboe <axboe@kernel.dk>
  Rob Nelson <rlnelson@google.com>
nvme: move request completion outside of nvmeq->q_lock

We don't need any locks for the request completion, and it's
one of the more expensive paths. So move rq entries to a list
and complete them outside of the lock.

NOTE: contains ugly hack on checking for req_completion, that
needs to be cleaned up.

Signed-off-by: Jens Axboe <axboe@fb.com>
nvme: avoid kmalloc/kfree for smaller IO

Currently we allocate an nvme_iod for each IO, which holds the
sg list, prps, and other IO related info. Set a threshold of
2 pages and/or 8KB of data, below which we can just embed this
in the per-command pdu in blk-mq. For any IO at or below
NVME_INT_PAGES and NVME_INT_BYTES, we save a kmalloc and kfree.

Signed-off-by: Jens Axboe <axboe@fb.com>