intel_app.lua: Preallocate buffers.

This causes a surprising performance improvement.
Conditionalize assertions in receive/transmit on new debug flag.

Inhibiting these checks increases performance about 7% on app.selftest().
app/link_ring: Working nreadable() and nwritable() link methods.
packet.h: Change refcount and fuel from uint32_t to int32_t.

This has a major performance impact on packet.ref() and packet.deref().
packet.lua: Added 'debug' flag to inhibit add_iovec assertions.

The default is false. The assertions have a modest but measurable
impact on performance.
link_ring.h: Made LINK_RING_SIZE a power of two (8129, was 10001).

This makes it faster to check for link full.
link_ring.lua: Make 'size' (C.LINK_RING_SIZE) variable 'local'.

This has a huge impact on performance.
app.selftest(): Preallocate buffers.

This has a big performance impact.
app.Source/Sink/etc: Minor optimization.

Calculate how many packets can be processed, then do so with a
counting for loop. This is modestly faster than a while loop checking
for link full/empty (the original behavior).

For example, this old code:

    while not empty(i) and not full(o) do
       transfer(o, receive(i))
    end

becomes:

    for _ = 1, math.min(nreadable(i), nwritable(o)) do
       transfer(o, receive(i))
    end