(#21518) 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.
(#16665) Remove references to netsh

We no longer use netsh to collect IP related facts on Windows. This
commit removes references to it.
Maint: Remove unneeded constants

This commit removes constants which are not needed on Windows. On other *nix
platforms, the constants are necessary when parsing the output of ifconfig,
but not on Windows, since we are programmatically getting this information
via WMI.
Maint: Simplify how interfaces are enumerated

Previously, we were enumerating each WIN32OLE object, only to have the
caller append the yielded object to an array and then call Enumerable
methods on the array.

This commit simplifies the method to return an Array of WIN32OLE objects,
so the caller can call Enumerable methods directly on it.
(#16668) Support IPv6 adapter binding order

Previously, if multiple interfaces had the same IP connection metric, then
we would always use the IPv4 specific adapter binding order, which could be
incorrect when reporting IPv6 IP related facts.

This commit adds a method for returning the ordered list of interfaces
supporting IPv6, and updates the various facts to use the appropriate
IPv4 or IPv6 method.
Maint: Update yardocs

Updated yardocs where appropriate. Also changed the predicate methods to
return a boolean instead of String or nil.
updating documentation
(#16668) added windows network spec helper
maint: adding lib to spec path in spec helper

 This is the same behavior that is in puppet.
(#16668) only include win nics in bindings

This ensures that only nics that are in the bindings for ipv4/ipv6 are checked
against the registry bindings
maint: update specs to use windows_network spec helper

This updates the network specs in windows to use the spec helper thus reducing
quite a bit of repetition in examples and spec files.
(#16668) 1.8.7 support - fix regex

This fixes a small issue with running in ruby 1.8.7 where
the regex needed explicit escapes that were not previously
specified.
(#16668) ipaddress_spec 1.8.7 compatibility

This commit adds a stub for kernel release and adds an explicit call to the
WMI query mock. This fixes issues with running specs on ruby 1.8.7.
maint: remove whitespace from netmask.rb, windows_network.rb, and ipaddress6_spec.rb
(#16668) Ipv6 remove warning

If someone does not have ipv6 installed or their machine doesn't have the ipv6
bindings in the registry, we should suppress any messages that result in not
finding that key.