Fixes #6444 - add support for virtual NICs

Bonds tend to only with with physical devices. Bridges can be anything (eg, openvpn is commonly configured with a tap0 device and a bridge between tap0 and eth0).

I agree it'd be nice to have the bond depend upon the physical devices, to keep everything consistent (the user will naturally want to create the physical devices first, *then* the bonds). Is there any way to achieve that? We can't be the first people to need to depend upon two objects :)