core: organize vm initialization on run VM

We can think of the structure of the execute phase of RunVmCommand as
follow:
1. initialize VM object (RunVmCommand#initVm)
2. select host (scheduling)
3. initialize VM object (cont)
4. connect luns
5. communicate with VDSM

Some of the operations in #3 should move to #1 as there is no need
to know the host on which the VM is going to run (and eventually #3
will be dropped).

This patch contains the following changes:
* Change the place where the last time the VM started is set to the VDS
  command which is a better place for it
* Moved the setting of: boot parameters + CPU name + parameters for
  external networks + hibernation volumes + guest agent version + VM
  devices, to initVm method
* Change the place where we determine whether the hibernation volume
  should be cleared after the VM is started or not to the VDS command

Note: some of the initialization steps in #1 (initialize VM object) are
required for the can-do-action checks, so this step is divided to 2
parts: one which is before the can-do-action checks and one which is
after them.

Change-Id: I5afa3dc5e94e2d2dbd48ebc95516b04e96ee043d
Signed-off-by: Arik Hadas <ahadas@redhat.com>