Maint: Don't load facts twice during specs

Previously, the spec_helper was prepending facter's lib directory to the
$LOAD_PATH, which had the side-effect of causing the zfs and zpool commands
to be executed 5 times, not 3 (as specified in the comments).

Originally, this was noticed because we were having to add `.at_least_once`
to expectations even though the method should have only been called once.

This commit no longer prepends facter's top-level lib directory to the
LOAD_PATH. In doing so, it causes the virtual fact resolutions to be
evaluated in a different order than the virtual tests expected. In
particular, the tests we're trying to verify the more-specific tests,
but were trying to evaluate the more generic virtual facts first.

This commit adds a higher weight to the more specific virtual facts,
since that's the expected behavior, and it ensures the tests reliably
test the resolution they trying to set expectations on.
Maint: Alphafy network names

Previously, on windows the network name 'Local Area Connection' was
being output as `network_local area connection` (with spaces).

This updates the dynamic fact to alphify the name like it does for the
other IP related facts, e.g. ipaddress
(#16668) Use WMI to collect IPv4 address

Previously, we were `IPSocket.getaddress(Socket.gethostname)` to
resolve the `ipaddress` fact on Windows, but using WMI-based methods
to resolve other IP related facts, interfaces, which led to inconsistent
fact information (the ipaddress from one interface, netmask from another).

This commit introduces a`Facter::Util::IP::Windows.get_preferred_network_adapters`
method that returns an ordered list of WIN32OLE objects that wrap
Win32_NetworkAdapterConfiguration objects. The list is ordered by the
IPConnectionMetric. If two interfaces have the same metric, e.g. host
with multiple NICs, then the order is based on the adapter bindings[1].

This commit also handles the case where multiple IPv4 and/or IPv6
addresses may be bound the same nic.

[1] http://support.microsoft.com/kb/894564
(#16668) Use WMI to collect netmask fact

Previously, windows hosts didn't report on the netmask for the related
ipaddress fact.
(#16668) Use WMI to collect macaddress fact

Previously, facter would report on the first macaddress associated
with an interface that had IP enabled. This could easily be an
interface with a high cost metric, or an IPv6 only interface.

This commit refactors the macaddress fact to use the same ordered list
of network adapters, so that it reports on the same interface from
which ipaddress was obtained.
(#16668) Use WMI to collect IPv6 address

Previously, we were using netsh to collect the ipaddress6 fact, but it
relied on en_US output and wasn't internationalizable.

This commit uses WMI, like the ipaddress fact, and handles issues like
multiple NICs, both IPv4 and IPv6 IP addresses on a single NIC,
per-interface metrics, and the binding order of interfaces.
(#16668) Use WMI to collect per-interface facts

Previously, we used netsh.exe to collect the interfaces fact, and the
derived per-interface facts on Windows. However, netsh.exe is not
available on plain 2003 servers, and the facts relied on netsh.exe
outputting en_US text.

This commit refactors the method to use WMI instead, which does not
have these issues.
(#16668) Remove references to netsh

We no longer use netsh to collect IP related facts on Windows. This
commit removes references to it.