buffer.lua: New data structure representing a network buffer.

This is introduced to keep relevant information together in one
place (virtual address, physical address, available size, used size)
and to allow for reference counting.

Partly implemented in the code base: port.lua spam() and intel.lua.

This commit changes the I/O API incompatibly - transmit() and
receive() both expect buffer structs now - so virtio and intel10g
modules need updating.