clib.h: Added memcmp(3).
apps/pcap: Now have PcapReader and PcapWriter apps.

These replace the Pcap app, which was a reader.
pcap.lua: Added write_record_header(), removed "extra" hack.

The "extra" hack was to hide additional information in the pcap record
by using a capture length larger than the actual packet length. It was
from a very early version of Snabb Switch that generated rich tcpdump
traces for testing-by-postprocessing.
vhost: Added missing packet.deref() in reclaim_transmitted_packets().
apps/vhost_apps: Added TapVhost app.

This app creates a Linux tap interface with fast vhost I/O.
intel_app: Partial fix after changes in app interface.
lib.lua: Added csum() to compute the IP checksum.

The code includes this important comment:

    NOTE: Checksums should seldom be computed in software. Packets
    carried over hardware ethernet (e.g. 82599) should be checksummed
    in hardware, and packets carried over software ethernet (e.g.
    virtio) should be flagged as not requiring checksum verification.
    So consider it a "code smell" to call this function.
packet.lua: Fixed nasty bug. free() did not zero packet.length.
apps.ipv6.SimpleIPv6: New app for proof-of-concept IPv6 packet forwarding.

Just minimal proof-of-concept code:

1. Respond to Neighbor Solicitation with Neighbor Advertisment.
2. Route IPv6 packets back to their sender (simple demo).
3. Check hop_limit and send ICMPv6 Time Exceeded (for traceroute).
4. Respond to ICMPv6 ECHO (for ping).

Includes a simple regression selftest: process input packets from a
pcap file and compare the packets sent with a "known good" trace.

Test like this:

    # cd snabbswitch/src
    # ./snabbswitch -t apps.ipv6.ipv6
designs/terastream: Initial work to support ISP networking for OpenStack.
pcap.lua: Removed debug printout.
apps/ipv6: Fixed pcap files for selftest.
Update authorized_keys

this is me at my laptop
vfio functionality
core.main: Fixed usage 'snabbswitch <design>' without args.
Added "make test".

The selftest functions need some love!

    $ sudo make test
    TEST      lib.hardware.pci
    TEST      lib.hardware.vfio
    TEST      lib.hardware.bus
    TEST      lib.hardware.port
    ERROR     testlog/lib.hardware.port
    TEST      core.link_ring
    TEST      core.lib
    TEST      core.memory
    ERROR     testlog/core.memory
    TEST      core.timer
    TEST      apps.intel.intel_app
    ERROR     testlog/apps.intel.intel_app
    TEST      apps.intel.intel
    ERROR     testlog/apps.intel.intel
    TEST      apps.intel.intel10g
    ERROR     testlog/apps.intel.intel10g
    TEST      apps.ipv6.ipv6
    ERROR     testlog/apps.ipv6.ipv6
    TEST      apps.vhost.vhost
    ERROR     testlog/apps.vhost.vhost
    TEST      apps.vhost.vhost_apps
    ERROR     testlog/apps.vhost.vhost_apps
intel_app: Fixed selftest() function.

Needed to be updated after changes to the app module interface.
Removed Intel 1G drivers (intel.lua).

Tagged with 'intel1g' so that we can revive them in the future when we
want to use them and have them in the lab. (Code safely in git history.)
Removed port.lua and selftest() functions that depend on it.

port.lua contained selftest functions operating directly on device
driver modules, but nowadays we should access drivers via App wrappers
and write tests as App networks.
intel10g.can_receive() changed to work under VFIO.

Checks the "descriptor done" flag of the RX-writeback buffer instead
of comparing rdt/rdh ring indices. (XXX Check performance cost.)