Fixes Hyper-V agent force_hyperv_utils_v1 flag issue

WMI root\virtualization namespace v1 (in Hyper-V) has been removed
from Windows Server / Hyper-V Server 2012 R2.

Hyper-V compute agent now creates instances which uses
root\virtualization\v2 namespace if the agent's OS is
Windows Server / Hyper-V Server 2012 R2 or newer.

Closes-Bug: #1344036

Change-Id: I874ade4456b92a63959a765c7851bcd001befa32
Fixes Hyper-V volume mapping issue on reboot

Hyper-V does not manage iSCSI mounted passthrough disks
correctly on reboot in some circumstances where disk
number assignment can change, resulting in instances potentially
booting with the wrong volume attached.

Change-Id: I99fa75aaa950de2ada8a03bd23c910c3ff810d69
Closes-Bug: #1322926

Conflicts:
	nova/tests/virt/hyperv/test_hypervapi.py
	nova/tests/virt/hyperv/test_vmutils.py
	nova/virt/hyperv/vmops.py
	nova/virt/hyperv/vmutils.py
	nova/virt/hyperv/vmutilsv2.py
Fixes Hyper-V SCSI slot selection

Currently, when attaching volumes, the Hyper-V driver selects the
slot on the SCSI controller by using the number of drives
attached to that controller.

This leads to exceptions when detaching volumes having lower
numbered slots and then attaching a new volume, as Hyper-V will
then try to use an occupied slot.

This patch fixes the issue by simply getting a list of used slots
and getting a slot that it's not among those. It also checks
for the slot number to be smaller than the maximum number of slots
per SCSI controller.

Fixes bug: #1329764

(cherry-picked from commit a73e31022c9fef532cc2d66462d13f4ab2358565)

Change-Id: Id0c09c4debc848004a78971670cc3caef2f77ce3

Conflicts:
	nova/tests/virt/hyperv/test_hypervapi.py
Add differencing vhdx resize support in Hyper-V Driver

Differencing VHDX images can be resized, unlike differencing VHD images.
Even so, the Nova Hyper-V driver currently does not support this.

This feature is required for resizing existing instances which use CoW
VHDX images and also in order to resize the root disk image when
spawning a new instance.

The methods which get the internal maximum size of a vhd/vhdx
image have been updated to lookup the parent disk and get the according
size instead of raising an exception in case of differencing images.

Change-Id: I867a9b35e5273b96afc443e5c436a15d0c45161b
Implements: blueprint add-differencing-vhdx-resize-support

Conflicts:
	nova/virt/hyperv/vmops.py
Add Hyper-V driver in the "compute_driver" option description

The description of the option "compute_driver" should include
hyperv.HyperVDriver along with the other supported driver.

Change-Id: Ic7e16fd5154609987b2ef0b6f8ee52619ccf489c
Closes-bug: #1347777

Conflicts:
	nova/virt/driver.py
	nova/virt/hyperv/__init__.py
Adds Hyper-V serial console log

Introduces the VM serial output log feature to the Hyper-V Nova
Compute driver.

The VM serial port COM0 is redirected to a named pipe so that a
worker can take the VM output and write it to a file.

The VM serial output is then read from this file whenever the
console log command is issued.

Implements: blueprint hyper-v-console-log

Co-Authored-By: Adelina Tuvenie <atuvenie@cloudbasesolutions.com>

Change-Id: I7d3132c0f934ac3e8d28315f4da766466612a6c0

Conflicts:
	nova/tests/virt/hyperv/test_hypervapi.py
	nova/tests/virt/hyperv/test_vmutils.py
	nova/virt/hyperv/vmops.py