Use request queue

Prevent SrbStatus from being overwritten with a success status by initializing earlier. Note: a failure can be overwritten with another failure, but a failure cannot be overwritten with a success.

The current data path will back off and queue any SRBs that cannot be fully inserted onto the shared ring. Under certain loads, this can mean an entire SRB has to wait until the previous SRB(s) have completed.
This patch series moves the data path to create a queue of blkif_requests from the incoming SRBs, and allow parts of the next SRB to be passed to the underlying block storage earlier.
Also add support for translating SCSIOP_UNMAP to BLKIF_OP_DISCARD (Note: storport does not issue SCSIOP_UNMAPs, a filter will be required to convert the appropriate IOCTL to SCSIOP_UNMAPs)