lightnvm: revised inflight algorithm to support multi-block rq's

The prior algorithm supported single-page inflight requests as
the algorithm didn't account for long requests whose constituent
parts would have to enter different inflight maps, thus making it
possible to lock a long request and not have subsequent requests
detect that parts of their request is locked due to an inflight
I/O.

Now RQ's are segmented into the block(s) they affect and each
affected block yields one additional entry in one of the inflight
maps. Note only one inflight lock is held at a time and the
algorithm overhead essentially equates the former implementation.

We lock each segment in turn, knowing no deadlocks can occur as
all requests lock in ascending order, and we don't desire two
requests being processed to swap processing order.