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.
vm: add docs for vm.Monitor

document the expected format of the samplings,
so noone has to do reverse engineering again.
vm: rename Monitor.{balloon => memory}

rename a method to reflect what it actually does, and not what
it is used for. This concerns the caller.
sampling: move NUMA stats gathering in a method

This is an old pet peeve of mine.
vm: sampling: drop AdvancedStatsFunction

Extract the samplings from VmStatsThread.
In the simplest form, they are a (named) tuple
of callable, interval, so treat them as such.

Doing so, we make the sampling code decoupled
from the Vm - destination sample window is now
a parameter of it.

Moreover, this also makes that samplings may
be done by generic code, not necessarily
by VmStatsThread.

As side effect, AdvancedStatsFunction is
no longer used, so it is dropped.
sampling: reorder methods for clarity

no code changes