Fix bug in ipv6:ntop()

The conversion from numeric to printable for ipv6 addresses was
seriously broken.  The fix includes a redefinition of the source and
destination address in the ipv6 header as uint8_t.
Add simplistic but efficient packet classifer

The module lib/protocol/matcher.lua provides a simple framework to
check whether a chunk of memory contains specific byte-strings of a
certain size at particular offsets.

This is considered to be a hack around the matching mechanism provided
by the datagram:parse() method, which performs poorly with regard to
garbage collection.

A better approach could be to integrate the matching engine of libpcap
into Snabb Switch.
Change of semantics of the datagram:push() method

To allow for more flexibility in the parsing of protocol headers in a
datagram, the parse() method now parses a single header only.  The new
method parse_seq() provides the same semantics as the old parse().

A new method parse_n() has been added to parse exactly n protocol headers.

Also new is the pop_raw() method that pops a protocol header without
parsing it.  This requires the application to already know the type
and size of the next header.
Bug fixes for the generic header and gre classes
Add support for the new matcher module to vpws and ns_responder

Both apps use the more efficient matcher module to avoid garbage
during packet classification.

They also use the new methods provided by the datagram class.