networkd: split out vlan and macvlan handling
networkd: netdev - take ref immediately after calling out

Keeping the refcounting next to the sd_bus_call_async() makes it easier to check.
networkd: netdev - drop the link callbacks after calling them once

We should never call them again, so make sure they are cleaned up correctly.
udev: net_setup_link - add a bit more logging
networkd: Introduce tun/tap device

This patch introduces TUN/TAP device creation support
to networkd.

Example conf to create a tap device:

file: tap.netdev
------------------
[NetDev]
Name=tap-test
Kind=tap

[Tap]
OneQueue=true
MultiQueue=true
PacketInfo=true
User=sus
Group=sus
------------------

Test:
1. output of ip link
tap-test: tap pi one_queue UNKNOWN_FLAGS:900 user 1000 group 1000

id:
uid=1000(sus) gid=10(wheel) groups=10(wheel),1000(sus)
context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

Modifications:

Added:
1. file networkd-tuntap.c
3. netdev kind NETDEV_KIND_TUN and NETDEV_KIND_TAP
2. Tun and Tap Sections and config params to parse
   conf and gperf conf parameters

[tomegun: tweak the 'kind' checking for received ifindex]
networkd: tunnels - make tunnel address parsing generic

It had a bug in the typing, fix that and also make it save the address family so we
can print proper error messages.
networkd: netdev - move tunnel address parsing to networkd-tunnel.c