nvme: BUGFIX - c variable was unassigned during channel init.

lnvm_init_ns_chnls did not properly assign 'c' before proceding
to write various values into it.
nvme: FIX, only update table range iff. dev is a lnvm-dev
nvme: FIX - refactor nvme_rw to allow non-LNVM RW cmd's, still.

By defining another CMD structure to cast the command into,
provided it is a LNVM device, the nvme_rw function remains usable
even for non-LNVM devices.
nvme: initialize mapping table entries to LNVM_LBA_UNMAPPED

In preparation for actual, persistent tables, all entries are
initialized to LNVM_LBA_UNMAPPED to simulate a clean slate table.
nvme: updated code use new way of passing along reverse mapping.

Traditionally, 4B was used from cdw13 and cdw12 to communicate the
reverse LBA address. Now the SLBA of requests is actually in LBA
and the reverse mapping, the SPBA is stored where reftag, apptag
& appmask would otherwise be.
nvme: renamed phys_slba to spba

phys_slba doesn't really make sense if the acronym is expanded.
spba is the natural counterpart to slba.
nvme: removed obsolete command & updated lnvm adm opcodes

LightNVM had a command to asynchronously flush the mapping table
earlier on. The code for this has been removed.
The P2L mapping has been changed to L2P in the newer LNVM spec -
command opcode and function name has been updated to reflect this.
nvme: imlemented persistent L2P mapping tables

Tables are now read from disk upon initialization and flushed as
part of the shutdown procedure.
nvme: FIX, added compile-time checks for LNVM L2P & BB cmd structs
nvme: implemented L2P command

Logical- to physical translation table map transfer command as
outlined in the LightNVM spec.
nvme: convert L2P tbl to 64b addressing. (& fix range error)

Converted from 32b entries to 64b entries. Also fixed an erroneous
range check error in update_l2p_tbl.
nvme: fixed partitioning code.

LNVM would crash if the disk was of such a size, that the number
of LBA sectors (through nsze) did not completely align with the
number of blocks (pages != channel_len * nchannels).
This has now been fixed - moreover, this prepares the code for
actual erasure commands as the LBA's of each channel are now a
perfect multiple of the number of blocks assigned to it.