Don't reload the config file every time something changes
general cleanup
removing auto option
use getifaddrs in setup_linklocal_addr

setup_linklocal_addr was reading /proc/net/if_inet6 using stdio.
I think using getifaddrs will be faster.
Factor device-*.c
privsep_kill

privsep is used only before the main loop.  Kill the privsep
process before entering the main loop.