condition: refactor a bit

No functional change, just move code around a bit to make it simpler to split out
some functions.
condition: split out most of condition handling into libsystemd-shard

The parts that require linknig to libcap, libselinux and friends stays in libsystemd-core.
network/link: Match - filter on kernel cmdline, host and virt
networkd: netdev - allow filtering on kernel cmdline, host and virt
sd-dhcp-client: prevent timer related memory leaks