lightnvm: error-checking on L2P data from device.

Table initialization now has limited capabilities for detecting
spurious table data. If any range is out of bounds, we stop, if
any PBA value is out of bounds, we stop. We still do not guard
against multiple LBA entries referencing the same PBA; however.
lightnvm: implemented invalidation/discard logic

As part of supporting discard/trim, LNVM should invalidate mapping
information pertaining to the supplied LBA range.
lightnvm: invalidate mapping entries on discard

The preceding patch introduced functionality to invalidate mapping
entries, this patch uses it to invalidate mapping entries upon
receiving discard requests. This alters discard requests issued
against LNVM devices to invalidate mapping entries & update the
number of invalid pages in the affected block(s) - no I/O is being
directly issued, which accounts for the modified flow of general
block layer code.
block: add helper for phys_sector

Instead of accessing the phys_sector through rq->phys_sector, let's make
a helper that follows the code style.
block: refactor blk_lightnvm_handle

Just refactor the flow into being more readable.
lightnvm: limit discards submitted for invalidation

Discard requests larger than the number of inflight tags stalls the
system when percpu_ida allocates a new tag and no more are available.

Instead make sure there are forward process by submitting the discard
request in chunks.
lightnvm: refactor and clean up code