canary.h, canary.lua: Improvements.

Moving 'struct canary' into a .h file makes it easy to use inside C
struct declarations in other .h files.

canary.lua now marks exactly which bytes have unexpected values.
packet.h: Added missing semicolon.
virtio.lua: Implemented multi-buffer receive.