[r=blake-rouse][bug=1628645][author=mpontillo] Fix external DHCP detection code.
* Parse DHCP options to reliably get DHCP server address.
* Change DHCP flags field to indicate preference for
unicast replies from the server.
* Fix race condition that caused DHCP offers to be missed.
* When sending the DHCP discovery packet, always send retries,
to increase the changes we see all servers.
* Change client unique identifier option to make it more
unique, and make it obvious that MAAS is sending it.
* Add code to interpret IPv4, UDP, and DHCP packets.
(Used for support/debugging only; a debug command uses it.)
* Added a `maas-rack observe-dhcp` command.
(For support/debugging only; not used at runtime.)