Tunings to reduce garbage and eliminate NYIs

lib/protocol/datagram.lua: pre-allocate the _packet variable upon
instantiation as ctype "struct packet *[1]" to avoid boxing.  This
appears to eliminate the bulk of garbage in the datagram class.

lib/protocol/icmp/: pre-define pointer ctypes in various classes to
avoid NYIs due to unsupported FastFunc ffi.typeof.

lib/protocol/ipv6.lua: pre-allocate a pseudo-header for every ipv6
object to avoid another NYI.