compute rpcapi 2.29 is not backwards compatible

patch 6fcf4133b49cfefa77151937dec4db097a85c349 which added compute
rpcapi version 2.29 does not provide any backwards compatibility.

Fix this issue with 'self.can_send_version'

Fix bug 1217068

Change-Id: Idc49040b712058aab8d3ed769bdf18bdc0a4f067
Make compute_api use Service and ComputeNode objects

This converts compute_api (and associated nova-api and test code)
to use Service and ComputeNode objects for their work.

Note the removal of the nova.db import from compute/api.py.
There is still a chunk of code that uses self.db, but it's
progress.

Related to blueprint compute-api-objects

Change-Id: I7d0b4c0d02559ec16b35dd38278cdf738e0fda6c
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"
Merge "Make compute_api use Service and ComputeNode objects"
Merge "compute rpcapi 2.29 is not backwards compatible"