dhcpd: Honor broadcast flag

If a client requests broadcast responses, we now do so.
dhcpd: Implement address release
dhcpd: Send NAK when we're out of addresses

If we run out of addresses to give, we now NAK the client.
I'm not positive this behavior is correct.
dhcpd: Check that messages are to us

This isn't really a strict check, and we still don't check the server
identifier option if it's given.
dhcpd: Add a lot of configuration flexibility

There's now a class for address pools, and a default implementation
that allocates addresses fairly flexibly out of a subnet.

Partially thanks to the above (as well as some other changes),
the DHCP server is now much more configurable, including a lot
of configuration being possible from the commandline.