The destroy method in WorkspaceHomeImpl was taking a per-instance lock
for the whole duration of an instance termination. This blocked the find
method (called by --status queries) which tries to take the same lock.
This commit changes the locking code of destroy so that it is released
while making the lengthy call to the workspace control agent. We also
add an additional instance-specific lock for destroy. This way, a second
call to destroy will block at the beginning. When this second call
eventually proceeds, it will not find the instance because it has been
removed (which is the current behavior). It also prevents the remove
handler to be called concurrently with a destroy from another workspace
action (for instance at the end of a start).