vm: migration: exponential downtime increment

Migration downtime is calculated using an interpolation
using the current downtime step (up to a configurabile
maximum) and the maximum downtime.

The downtime is incremented at each downtime step until
it reaches the maximum, or the migration is finished.

This patch changes the interpolation formula from linear
to exponential, being the new one:

d = c ** s + k

where d is the downtime, s is the step and c is the
exponentiation base computed in such a way
of when s = S (number of steps to perform),
then we will have d = D (selected downtime).
K is a constant added to make sure that downtime 'd'
is never equal to zero.

The rationale for this patch is that moving linearly from
the minimum to maximum downtime limit isn't very useful:
if if we took 1s downtime for a migration that could complete
with 0.1s downtime, that's very bad, but if we take 11s to
complete a migration that could finish in 10s, it's not a
big deal.

So, it makes more sense to step towards the final hard limit
exponentially rather than linearly.
In addition, because most of the attempts will be much shorted
than the final hard limit, it won't blow out the total time to
complete migration nearly as badly.

Please note that this patch still preserve an linear
increment of the wait time.

Along the way, we take the chance to bootstrap unit
tests for vdsm/virt/migration.py.

Change-Id: I6401772f52ea28144452e67198bddff18f6703eb
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1004101
Signed-off-by: Francesco Romani <fromani@redhat.com>
Reviewed-on: http://gerrit.ovirt.org/25820
Reviewed-by: Dan Kenigsberg <danken@redhat.com>
Reviewed-by: Martin Polednik <mpolednik@redhat.com>