[WIP] Fixes #6444 - add support for virtual NICs

So regarding my comment on the link parsing test. If I'm reading the code right, the following happens:

* Facter returns no link_eth0 fact
* Parser has no `:link` attribute in the hash
* `set_interface` makes no change to iface.link because `:link` isn't present
* Nic::Base defaults to `:link => true`

If I got that right, then we aren't testing the implicit behaviour of the link status here - we're specifying `:link => false` which is still explicit. We're only testing that specifying false correctly updates the link status.

Could we add a nice simple one (like `set_interfaces creates new physical interface` below) which ensures link is true when not specified by facter?