App network configuration support.

(Rewrote `app.lua` and created `config.lua`.)

Added a new 'config' data structure that describes an app network and
the function `app.configure(config)` to instantiate it.

You can call `app.configure()` several times and each call will
compute the changes needed to switch from the old app network to the
new one, creating/deleting/updating apps and links as needed.

This requires minor changes to all apps:

1. The functions `receive`, `transmit`, `nreadable`, etc, have moved
   from the `app` module to the `link` module. (Calls must be updated.)
2. The port arrays `outputi` and `inputi` aren't automatically created
   anymore. This is an issue if you want to iterate through all ports.
   (You can look at how `basic_apps` dealt with this.)

and minor changes to all app-networks:

1. Use the `config` module functions `new()`, `app()`, and `link()` to
   define which apps and links you need.
2. Call `app.configure(myconfig)` instead of `app.relink()`.
2. (Optional) call `app.main({duration = numseconds})` instead of
   writing a `breathe()` loop.
Migrated designs/basic to new app interface.
Migrated apps.vhost_apps to new app interface.
Migrated apps.rate_limiter to new app interface.
Migrated apps.ipv6 to new app interface.
Migrated apps.pcap to new app interface.
Migrated app.intel_app to new app interface.
Migrated apps.basic.basic_apps to new app interface.
Added an example app written in assembly language with DynASM.
Removed intel.lua.

(This was accidentally revived. We want to do that, but it needs a
little maintenance first.)