logind: fix Display property of user objects

When we dropped support for creating a per-user to the "main" X11
display we stopped returning useful data in the "Display" user property.
With this change this is fixed and we again expose an appropriate
(graphical session) in the property that is useful as the "main" one, if
one is needed.
sd-login: add C API to query primary session of a user
sd-dhcp-lease: move in_addr (de)serialization to shared network code
networkd: link - serialize DNS information
sd-network: expose DNS information
resolved: add daemon to manage resolv.conf

Also remove the equivalent functionality from networkd.
sd-dhcp-lease/sd-network: modernization and fix leak
networkd: fixup static DNS serialization
networkd/sd-network: expose statically configured NTP servers
networkd/sd-network: extend operational states

Expose states 'degraded' or 'routable' if a link has a site/link-local or a routable address, respectively.
timesyncd: only attempt to connect when an address is configured

For now, we accept both link-local and routable addresses, maybe we want to
restrict ourselves to routable addresses only.
networkd-wait-online: wait for addresses to be configured
networkd: introduce sit tunnel

This patch introduces sit tunnel support to networkd

Example conf:
file: sit.netdev

[NetDev]
Name=sit-tun
Kind=sit
MTUBytes=1480

[Tunnel]
Local=10.65.223.238
Remote=10.65.223.239

file: sit.network

[Match]
Name=em1

[Network]
Tunnel=sit-tun

[tomegun: rebased]
TODO

IFLA_IPTUN_PMTUDISC
IFLA_IPTUN_FLAGS (ISA_TAP)

FLA_IPTUN_6RD_PREFIX
FLA_IPTUN_6RD_RELAY_PREFIX
IFLA_IPTUN_6RD_PREFIXLEN
IFLA_IPTUN_6RD_RELAY_PREFIXLEN
udevadm-settle: fixed return code for empty queue

If the udev queue is empty and "/run/udev/queue" does not exist,
"udevadm settle" would return with EXIT_FAILURE, because the inotify on
"/run/udev/queue" would fail with ENOENT.

This patch lets "udevadm settle" exit with EXIT_SUCCESS in this case.
timesyncd: save clock to disk everytime we get an NTP fix, and bump clock at boot using this

This is useful to make sure the system clock stays monotonic even on
systems that lack an RTC.

Also, why we are at it, also use the systemd release time for bumping
the clock, since it's a slightly less bad than starting with jan 1st,
1970.

This also moves timesyncd into the early bootphase, in order to make
sure this initial bump is guaranteed to have finished by the time we
start real daemons which might write to the file systemd and thus
shouldn't leave 1970's timestamps all over the place...
sd-dhcp: refactor dhcp_option_append

Store a pointer to the options in the DHCPMessage struct, and pass
this together with an offset around, rather than a uint8_t**.

This avoids us having to (re)compute the pointer; and changes
dhcp_option_append from adjusting both the pointer to the next
option and the remaining size of the options, to just adjusting
the current offset.

This makes the code a bit simpler to follow IMHO, but there should
be no functional change.
sd-dhcp: refactor parse_options

Similar to the previous patch, exchange a length and a pointer with only one offset variable.
Also fix the type of the options to be uint8_t[], rather than uint8_t*.
dhcp-lease: refactor lease parsing

Use helper functions, and add some more sanity checking/asserts.
dhcp-lease: add support for parsing a few more dhcp options