Revert "Merge pull request #275 from javierguerragiraldez/offload"

This reverts commit 5f783326e5a10e6a6e69a725bbaa95392ef56d8b, reversing
changes made to c2b2ca47c9b4903b3fcdc4814c115f539d36e3eb.
Merge pull request #284 from virtualopensystems/revert_offloading

Revert "Merge pull request #275 from javierguerragiraldez/offload"

TX checksum offload feature was merged prematurely
virtio: print feature names upon negotiation

Signed-off-by: Nikolay Nikolaev <n.nikolaev@virtualopensystems.com>
net_device: Refactor vrings

Add a VirtioVirtq class, that will handle the generic virt queue opertions:

 - get_buffer (from available ring)
 - put buffer (to used ring)
 - signal used (that a buffer was put to used ring)

This lowers down the packets per second performance to 2Mpps.

Adds support for VIRTIO_F_ANY_LAYOUT.

Signed-off-by: Nikolay Nikolaev <n.nikolaev@virtualopensystems.com>
virtio: supoprt indirect descirptors

On an unpatched QEMU, netperf with TCP_STREAM:

 - no indirect descriptors   - 2644.37 Mbps
 - with indirect descriptors - 4275.32 Mbps

Signed-off-by: Nikolay Nikolaev <n.nikolaev@virtualopensystems.com>
virtio: add MQ

Signed-off-by: Nikolay Nikolaev <n.nikolaev@virtualopensystems.com>
bench: add mutli queue support

Signed-off-by: Nikolay Nikolaev <n.nikolaev@virtualopensystems.com>
cache virtq:get_buffers, change its args
net_device+virtq: localize data; “flatten” all args and returns

The latter is ugly'ish, but with it luajit is able to preform
allocation sinking optimizations and at least this part is totally
gc-free. ~4Mpps