Fix handling of SLLA option in inbound NS
Remove debug statement
Split parsing and processing of RAs
Split parsing and processing of NSs
Split parsing and processing of NAs
Separate logic and IO in handling of NSs
Separate logic and IO in handling of RAs
Separate logic and IO in handling of NAs
Separate logic and IO in `output' and `tick'
Cleanup
Clearer control flow in `output'
Separate logic and IO (WIP) into different modules

The logic is all contained in the Engine module.  All the Lwt/Mirage
code is now (mostly) isolated in one small module
(functor Make).  The only exception is the Timer module which is used in
Engine but has to be removed.
Make core logic independent of Lwt

When necessary a function now returns a pair [(pkts, timers)] consisting
of a list of ethernet packets that should be written to the underlying
network interface and a list of floats representing number of seconds
until the `tick' function should be invoked.  This way we do not have to
do busy waiting when nothing is going on. The timers are managed
automatically by the Lwt/Mirage frontend (functor Make).
Cleanup