blkback: implement indirect descriptors

If any requests are using indirect descriptors then we make 2 passes
over the requests: (1) we map the indirect grefs to allow us to transform
the indirect operations into direct ones; (2) we map the payload
grefs to perofrm the I/O.

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
indirect: when reading the operation type, read the 'indirect_op' field

Otherwise we confuse blkback which doesn't know whether it's a read
or a write.

Signed-off-by: David Scott <dave.scott@eu.citrix.com>