Adds support for Hyper-V WMI V2 namespace

Blueprint: hyper-v-wmi-v2

The Hyper-V APIs are mainly based on WMI. The original 2008 Hyper-V
release introduced the "root\virtualization" namespace which got
superseded in Hyper-V Server / Windows Server 2012 by the
"root\virtualization\v2" namespace (referred as V2 in the sources).

Features introduced in 2012, including as an example live migration
and VHDX support are available via the V2 namespace only.

Furthermore, the original namespace has been dropped in the upcoming
Hyper-V 2012 R2 (currently available in preview), which means that
the Grizzly code will not be compatible with it as is.

The Hyper-V driver is structured with a clear decoupling between OS
interaction classes (so called *utils modules and classes) and the
driver's business logic (e.g.: *ops modules and classes).

This allows us to provide an implementation of the V2 API without
impacting the rest of the driver's code, based on the previously
included utilsfactory module to instantiate the proper version of
the *utils classes: the original "V1" ones for versions of the OS
predating 2012 and the newer "V2" ones starting from Hyper-V 2012
(Windows kernel version 6.2).

Hyper-V previous V1 APIs can be forced by setting the following option
in the hyperv section to true. The default is false.

force_hyperv_utils_v1=false

Unit tests have been added for the relevant factory functions.

DocImpact
Change-Id: I5246bdd33ee8e1b607bbf00b748225e933aa417a
Merge "Adds support for Hyper-V WMI V2 namespace"