NVMe: BUG on missing nvmeq

Christoph noted that the driver should not continue initialization on missing
nvme queue.
NVMe: replace nvmeq->hctx with nvmeq->tags

Christoph noted that only hctx->tags is used within the driver.
Reference tags instead of hctx within a nvme queue.
NVMe: refactor request submission to hw

Christoph noted the flow that decides what command should be
executed, can be rewritten to remove an unnecessary goto.
NVMe: refactor initialization of nvmeq->tags

Christoph noted that only the tags structure within hctx was used. After the
previous refactoring in 06598fe, the assignment of tags can now be moved
outside the hctx_*_init functions.
NVMe: during abort, put request on failure

Forgot to put the request if it wasn't successfully submitted to the
device.
NVMe: insert comment about abortion of requests

It isn't entirely clear how the abortion logic happens. By the NVMe
specification, a NVMe device sends back status on an aborted command on
abort. This can be used to officially abort a request in the normal
req_completion function.