networkd: dhcpv4 - add notion of 'CriticalConnection'

These connections are never torn down, even when the DHCP specifications say that
they should be. This is useful/necessary when the rootfs (or another critical fs)
is mounted over this network connection, and dataloss would result if the connection
is lost.

This option defaults to off, but our initrd generator (TBD) will enable it when
applicable.
net-util: verify the address family

Error out if the address family is already set to something incompatible with the
address being parsed.
networkd: address - add support for broadcast
sd-dhcp-client/net-util: make netmask_to_prefixlen generic

This was originally included in the dhcp-client at my request, but it is not
really dhcp-specific and useful outside of it, so let's pull it out.
sd-rtnl: beef up rtnl-util a bit
networkd: netdev - reduce chance of race when receiving netdev's ifindex

When creating a new link, the kernel will not inform us about the new ifindex
in its ack. We have to listen for newly created devices and deduce the new
ifindex by matching on the ifname.

We used to do this by waiting for a new device from libudev, but that is asking
for trouble, as udev will happily rename the device before handing it to us.
Listen on rtnl instead, the chance of the name being changed before reaching us
is much smaller (if not nil).

Kernel patch in the works to make this unneccessary.