App network configuration support (rough draft).

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 causes some changes to the app module (mostly simplifications):

* New syntax needed for creating app networks.
* app.lua does not need wrapper tables around apps and links anymore.
* `link_ring` is renamed to `link`.
* Links are now accessed directly with e.g. `link.transmit()` instead
  of indirectly via `app.transmit()`.
* breathe() now traverses links rather than apps when searching for
  work to do i.e. the link structure tracks where new work is
  available and which app should be run.
* Added a `main()` function that can be used instead of the caller
  looping over `breathe()`.