Synchronize commands and update properly with a lock (towards
resolving #
1458175 and #
1504036):
(update_lock): New.
(update_shed): Initialize it.
(update_wait, dispatch): Take exclusive update_lock around the update,
shared update_lock around commands. This makes the update block until
all aborted commands terminated and gave up their lock. Remove the
cheesy and unsafe two second wait for commands to finish. It also
makes player threads block before executing commands while the update
is pending, removing the need to fail commands then. So don't.