sd-pppoe: add library and test program to create raw PPPoE link

This is not useful in isolation, as PPP negotiation must also be performed.

About the library:

The library negotiates with the PPPoE server, and creates the PPPoE channel
accordingly. It then extracts the PPP channel index, which is exposed to
the user. It is the task of the user to make use of the channel index to create
a PPP interface, as the example systemd-pppd code shows.

The user is notified when the channel is ready, and when the server has terminated
the connection. In that case, the user should clean up / tear down its things
before stopping the library.

A caveat with the whole thing, is that the interface _name_ of the underlying
link must be passed to the library (in addition to its ifindex). This is
inherently racy, but we have to make the best of what we got. The user should
to the extent possible update the ifname if it ever changes.

Testing:

 # ip link add type veth
 # pppoe-server -I veth0 # (from 'ppp' package)
 # SYSTEMD_LOG_LEVE=debug ./systemd-pppd veth1

Notice that a new ppp0 netdev is created, that systemd-pppd is shutdown
gracefully after pppoe-server times out, and that ppp0 is then cleaned
up.