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.
vm: make Vm.stats public

future patches want to make use of it.
Moreover, to have it public actually reduces coupling.
clientIF: add API to get all registered VMs

add an API to extract all the registered VMs in
the safest possible way.
Must *not* be a deepcopy.
WIP: adapt scalable_sampling to bulk stats

WIP: untested, bits known missing

we want to build on the former scalable_sampling patch
but rearrange things to have just two executors,
one high-importance, in charge of all disk-related stats
(critical for data safety) and one of regular importance.

This patch is expected to make performance *worse*, but
it is a necessary intermediate step to leverage the
libvirt bulk API stats while keeping patches manageable.