XenAPI: Synchronize on all VBD plug/unplug per VM

Dynamically adding or removing a device needs to be synchronized
to work around a bug in XenServer 6.1 and 6.2 where simultaneous
events can be partially ignored, leading to a failure to plug or
unplug.  The bug is between two internal components in XenServer
which pass messages - the first component will ignore all messages
from the second while a plug/unplug is in progress, expecting
only one message to be received.  If two plug/unplugs occur in
this time, an internal assertion is raised as XAPIs internal state
is inconsistent.

Change I7b86325714e38b00a2f51bbf083b5532a6c51fa9 attempted to
work around the issue by retrying - however that does not catch
all failures.  This change should eliminate some of the known
INTERNAL_ERROR failures, but not all, so I7b8 need not be
reverted.

Change Ie7a64c481a9e3874df9d5924fbb050ac7ab117db does the same
as this, but only for VBD.plug.

Change-Id: If78d4e5f1dd84f1d4a588f25b8f887a7b125bbea
Closes-bug: 1217972
Merge "XenAPI: Synchronize on all VBD plug/unplug per VM"