blkback: batch grant map, unmap as much as possible

Take all requests currently on the ring and map/unmap them all at once,
one mapv for read requests (which need write permissions) and one mapv
for write requests (which only need read permissions).

In the userspace blkback server using the DISCARD backend, our performance
is now up to ~800MiB/sec in both directions.
Merge pull request #5 from djs55/batch-grants

blkback: batch grant map, unmap as much as possible