Factor out DHCP client support

Support for additional DHCP clients is now easy to add.
Make dhcpcd/dhclient pid files world readable

Needed since 8a41497.
wifi-menu: generate keys in proper quoting syntax
wifi-menu: handle interface's rfkill switch

Temporarily enable the interface's rfkill (if specified) before issuing a scan
and restore its state afterwards.
Introduce a new PPP connection type

This should at some point take care of most PPP use cases, but
currently is just a frontend to pppoe. The main difference is that the
new connection type keeps track of profiles by their 'dynamic' interface
name. Hence it is not wise to use both pppoe and ppp profiles.
Change how netctl-auto looks for active interfaces

Instead of searching for wpa_actiond pid files, the netctl-auto
utility now looks for running systemd netctl-auto units.
Prohibit user invocation of netctl-auto [start|stop]

Instead of using systemctl to manage the netctl-auto service, some users try to
invoke the start/stop commands of netctl-auto directly. Although this behaviour
is explicitly discouraged in the man page, this seems to be a source of
confusion.

The changes introduced in de8c80f will cause other netctl-auto commands to fail
if the netctl-auto service was not spawned by systemd. Therefore, this change
emits an error message if netctl-auto [start|stop] is invoked from an
interactive terminal.
Update zsh-completion for netctl-auto
Update bash-completion for netctl-auto
port bonding from ifenslave to iproute2

Ifenslave is deprecated according to the kernel documentation:
https://www.kernel.org/doc/Documentation/networking/bonding.txt
It also added an additional, unnecessary dependency. I tried to update
the documentation to reflect this change.
Minor improvements to bridge/vlan code
Add macvlan connection support