core: keep engine lock after execute stage for async commands

The engine lock is automatically released when the command ends the
execute method with no tasks, even if the command is set to keep the
locks for the whole command lifecycle. It should be that way for most of
the commands, but not for async commands (which implement
IVdsAsyncCommand) because such command always end the execute method
with no tasks and we don't want their locks to be released after its
execution when they are set to keep their lock for the entire execution.

Thus this patch adds a check that prevents the engine lock from being
released after the execute method for async commands.

Change-Id: I5f7ef28a1ddef613b457aa47a85d9c0b5ce7a8d7
Bug-Url: https://bugzilla.redhat.com/952147
Signed-off-by: Arik Hadas <ahadas@redhat.com>