virtiolib: Shadow available ring flags & index
virtiolib: Shadow available ring flags & index

This is a port of Linux commit f277ec42f to improve cacheline
transfer flow by only writing to avail->flags and avail->idx.
Reads are satisifed from newly added shadow fields in struct
vring_virtqueue.

gnif/kvm-guest-drivers-windows,daynix/kvm-guest-drivers-windows,gnif/kvm-guest-drivers-windows,gnif/kvm-guest-drivers-windows,virtio-win/kvm-guest-drivers-windows,YanVugenfirer/kvm-guest-drivers-windows,ladipro/kvm-guest-drivers-windows,YanVugenfirer/kvm-guest-drivers-windows,YanVugenfirer/virtio-win-arm,vrozenfe/kvm-guest-drivers-windows,vrozenfe/kvm-guest-drivers-windows,YanVugenfirer/kvm-guest-drivers-windows,ladipro/kvm-guest-drivers-windows,daynix/kvm-guest-drivers-windows,ladipro/kvm-guest-drivers-windows,virtio-win/kvm-guest-drivers-windows,virtio-win/kvm-guest-drivers-windows,daynix/kvm-guest-drivers-windows,vrozenfe/kvm-guest-drivers-windows,YanVugenfirer/virtio-win-arm,YanVugenfirer/kvm-guest-drivers-windows,YanVugenfirer/kvm-guest-drivers-windows,vrozenfe/kvm-guest-drivers-windows,vrozenfe/kvm-guest-drivers-windows,YanVugenfirer/virtio-win-arm,daynix/kvm-guest-drivers-windows,ladipro/kvm-guest-drivers-windows,daynix/kvm-guest-drivers-windows,YanVugenfirer/virtio-win-arm,virtio-win/kvm-guest-drivers-windows,gnif/kvm-guest-drivers-windows,virtio-win/kvm-guest-drivers-windows