core: introduce RunVmCommand#RunVmFlow

RunVmCommand is a complicated command since it contains several
different flows:
- Resume paused VM
- Resume hibernated VM
- Create snapshot and then run the VM for running stateless VMs
- Remove snapshot in case the VM already contains stateless snapshot
- Run VM in all other cases

This patch introduces an enumeration that represents the different flows.
The benefits of using an enum:
- It replaces local flags that indicates the different flows (mResume,
  isFailedStatelessSnapshot)
- It makes the code more structured
- It can be used to eliminate unnecessary operations in certain flows
  more easily. In this patch, I used it in order to prevent initialize
  the VM object in flows where we don't really need it
- In the context of the planned enhancements for RunVmCommand, it allows
  us to query the flow from outside of the command

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