vm: handle missing domains on recovery

During recovery, VDSM asks libvirt for the list of existing
VMs to reconnect to. This works fine on most cases but
do not handle well the case of a VM vanished (e.g.
put down or migrated manually) when VDSM is down.

In order to deal with those cases, we need to consider
more sources of data to rebuild the list of VM to be
recovered. The first choice is the collection of recovery
files. VDSM can iterate through orphan recovery files
and rebuild empty VM objects for VM somehow disappearead,
just to let engine collect them.
This is implemented in
Id495f6047ba658c2b04da19bd7bf76425b3b9659

In this case, the attempt to acquire the underlying libvirt
domain would fail, but we still want to create an hollow VM
object, granted it is in status Down.

This patch adds an explicit check in the recovery path to
make sure that a VM is either created with a valid libvirt
domain handle, or it is reported as Down so the engine
can collect its state and explicitely destroy it.

This patch is part series which collectively fix the bz1045626.

Change-Id: I00ef12883c8035209de0f273925eb8603d6b6da8
Bug-Url: https://bugzilla.redhat.com/1045626
Signed-off-by: Francesco Romani <fromani@redhat.com>
Reviewed-on: http://gerrit.ovirt.org/25275
Reviewed-by: Dan Kenigsberg <danken@redhat.com>