Handle non zero copy case in virtio device

This pull request handles the case of receiving non-zero copy packets through the virtio device.
The basic operation is to detect the buffer origin and copy its data to a VM supplied buffer.
There is a special logic to detect when the vm buffers are exhausted and hold processing the incoming packets.