xen, blkfront: make fields related to grants and indirect descs per-ring

This commit is a first step of preparing the data structures of the
frontend driver to move locking to be per-ring. It begins by moving
fields related to persistent grants and indirect descriptors to be
per-ring, still not resizing the per-ring pool and keeping the lock
per-device. The callback executed when a grant has been freed is
also per-device.
xen, blkfront: move callback and work struct to be per-ring

This commit implements a further step towards per-ring locking by
moving free grant callbacks and work structures to be per-ring.
The lock is still per-device.
xen, blkfront: move io_lock to be per-ring

This commit implements a last step of transition towards per-ring
locking. The lock is still kept, even if per-ring, because in certain
occasions (e.g. device connection, block device setup/teardown) it
is still necessary to lock against request insertion on all of the
device's rings.