vm: extract monitoring from stats thread

In order to monitor (aka 'sample') the status
of a Vm, VDSM uses the Vm statistics threads.

Each thread is in charge of checking the state
of a Vm, fetching the data from the Vm class
and from the hypervisor.
In order to collect the data from the hypervisor,
the stats thread has no choice but to access
the (private!) domain connection of a Vm,
thus violating the layering and introducing
unnecessary coupling.

This patch introduces the vm.Monitor class,
which is in charge to export the hypervisor
stats needed by VDSM.

This way, we can decouple the source of
hypervisor data from its users, and
establish a stronger (and documented)
interface. This also makes testing and
future changes easier to both sides.

In order to keep this patch minimal,
only the new class is added and mostly
code is moved with minimal renaming.

Future patches in the series will add
documentation and tests for the new class.
virt: move VmStatsThread in its own module

With the introduction of the vm.Monitor class
to provide domain monitoring data in a safe
and controlled way, VmStatsThread isn't
stricly coupled with Vm class anymore,
thus can be moved out of the overcrowded
vm.py module.

Since in a not so distant future virt.sampling
will be organized as subpackages, move
this class into a new module and not
bloat sampling.py.

No code changes besides fixing names and imports.