Fix a race between WaitSetDispatcher::RemoveWaitingDispatcher and WaitSetDispatcher::GetReadyDispatchers.
Fix a race between WaitSetDispatcher::RemoveWaitingDispatcher and WaitSetDispatcher::GetReadyDispatchers.

Because RemoveWaitingDispatcher() released |lock_| before acquiring
|awoken_lock_|, there's an unlocked state where a dispatcher can exist
in |processed_dispatchers_| but not |waiting_dispatchers_|. This breaks
the expectations of GetReadyDispatchers().

Review URL: https://codereview.chromium.org/1697453002

Cr-Commit-Position: 972c6d2dc6dd5efdad1377c0d224e03eb8f276f7@{#375397}

axinging/chromium-crosswalk,axinging/chromium-crosswalk,axinging/chromium-crosswalk,axinging/chromium-crosswalk,axinging/chromium-crosswalk,axinging/chromium-crosswalk,axinging/chromium-crosswalk,axinging/chromium-crosswalk,axinging/chromium-crosswalk,axinging/chromium-crosswalk,axinging/chromium-crosswalk