intel10.lua: First cut at Intel 10GbE (82599) hardware support.

The 82599 initialization is sufficiently different that I decided to
start off by writing this driver from scratch. Once it works we can
look at how to merge/share common code with intel.lua.

Early days. This works: waiting for EEPROM to load, waiting for link
to go into service. This doesn't: DMA. More progress coming.

I decided to experiment with a couple of Lua programming styles to
spice up life a bit:

Register descriptions are now written as a string. The string is
parsed during init to create a table of registers, called 'r'.

Looks like this:

    RDBAL     0x01000 +0x40*0..63  (RW) Receive Descriptor Base Address Low

.. which is valid for all 64 receive queues and is easy to
cross-reference with the data sheet. (Currently not making use of all
this info in the code.)

Each register is represented as an object: a C uint32_t* pointer
wrapped in a Lua closure that allows this convenient syntax:

    r.MYREG(value) -- store a value
    r.MYREG()      -- read current value
    set(r.MYREG, bitmask) -- set bits (bitwise 'or')
    clr(r.MYREG, bitmask) -- clear bits
    wait(r.MYREG, bitmask, value) -- block until bits have some value

Just an experiment.
snabb.[ch]: Added sleep_ns(int) nanosecond sleep function.
lib.lua: Added timer(ns) => timer function.
The timer function starts returning true after NS nanoseconds have elapsed.
intel10g.lua: DMA working, selftest transmitting, added statistics reigsters.
intel10g.lua: Added support for receiving packets.
intel10g.lua: API update. Work-in-progress.
hub2.lua: Example program for connecting two network ports together.

Like a 2-port ethernet hub, which is like an ethernet cable :-).

Requires API updates to virtio and intel10g before it can be tested.
intel10g.lua: Fixes & Update to new I/O API.
hub2.lua: Now working in basic testing.
virtio.lua: Upgraded to new I/O API. Fixed bugs.
src/Makefile: Add dependency on the Makefile.
main.lua, snabbswitch.c: Add command-line arguments to snabbswitch.

    Usage: snabbswitch [options]
    Available options are:
    -e chunk     Execute string 'chunk'.
    -l name      Require library 'name'.
    -d           Debug unhandled errors with the Lua interactive debugger.
    -jdump file  Trace JIT decisions to 'file'. (Requires LuaJIT jit.* library.)

This means we can tell snabbswitch what we want it to do using the
command-line, instead of (as I have) always hacking selftest.lua to do
whatever it is I'm interested in today.

Default behavior is to assume "-l selftest" (i.e. backwards compatible).
memory.lua: Added module_init() to mlockall() at module-load time.

Previously the memory.lua API relied on mlockall() to have already
been called elsewhere.
memory.lua: Verbose error messages on physical address resolution failures.

Example:

      0xc0a0a000 did not resolve with active DMA regions:
      0x1ac00000 - 0x1ae00000 [2048 KB] (no match)
      0x1ae00000 - 0x1b000000 [2048 KB] (no match)
      0x1b000000 - 0x1b200000 [2048 KB] (no match)
      0x1b200000 - 0x1b400000 [2048 KB] (no match)
      0x1b400000 - 0x1b600000 [2048 KB] (no match)
      0x1b600000 - 0x1b800000 [2048 KB] (no match)
    memory.lua:123: Failed to resolve physical address of 0xc0a0a000
memory.lua, snabb.c: Untabify.

How come (setq indent-tabs-mode nil) in ~/.emacs doesn't DWIM?
Do I really need to hook it for lua-mode and every other mode?
Harrumph.
Refactored register object from intel10g.lua to register.lua.

Based on @pkazmier's proposed API for register objects.

Totally untested. Patience, please :-)
intel10g.lua: Removed dead code.
intel10g.lua, register.lua: Debugged to run again.
Removed deps/luafilesystem. Not used. snabb.c + FFI is enough.
src/Makefile: drop lfs.o from linker. Removed in previous commit.