core: allow successful retries of Live Merge

Change RemoveSnapshotSingleDiskLiveCommand and related commands to
allow for successful retries after deletion or merge fails.

Upon merge failure, images are marked illegal but remain in the volume
chain.  Retries will start over and attempt to merge the images again.

Upon deletion failure (but after a successful merge), the volume chain
is updated to reflect the new chain; however, the orphaned images are
re-associated with the snapshot to be deleted, marked illegal, and set
to have no parents or children.  Upon retry, the command will detect
this state and skip to the DESTROY_IMAGE execution step.

Change-Id: Ib794822c6b03cb05e00dc7e99113127aaed43ce9
Signed-off-by: Greg Padgett <gpadgett@redhat.com>
core: set active image after Live Merge of active layer

Live Merging the active layer should mark the new active image.

Change-Id: Ifc2777257b85c52011aa3bd7c9ad56c2ea680b63
Signed-off-by: Greg Padgett <gpadgett@redhat.com>
core: sync VM config after Live Merge

After a backwards merge, the child of a deleted snapshot will now have a
different image associated with it.  This needs to be reflected in the
VM configuration for the snapshot, else the disks will be marked illegal
in the UI and won't function properly when the snapshot is
previewed/reverted.

Change-Id: Ic37dc1e54b99893bca68088eee80c26e1fbf9f91
Signed-off-by: Greg Padgett <gpadgett@redhat.com>
core: fix race when removing memory volumes during Live Merge

Memory volume removal was not tracked as a child command, and its
completion would trigger endAction of RemoveSnapshotCommand before the
tasks run by ExecutionHandler were complete.  Instead, use the newer
RemoveMemoryVolumesCommand during Live Merge, which Executionhandler can
coordinate.

Change-Id: I12e317ada7159101cc5349e9a084b7f316493048
Signed-off-by: Greg Padgett <gpadgett@redhat.com>