This completely refactors the winex11 window state tracking, keeping track of the desired/pending/current window state and config in a fully asynchronous way, and avoiding duplicate requests. I believe this mitigates various race conditions that we're suffering from, solving most spurious event feedback loops when the X11 state is being applied while some win32 state change is being requested, and fixing the spurious d3d/ddraw/user32 test failures.
-- v7: winex11: Request window state updates asynchronously. winex11: Update the window client config on window state changes. winex11: Wait for pending ConfigureNotify before updating the client state. winex11: Wait for pending _NET_WM_STATE before updating the client state. winex11: Ignore focus changes during WM_STATE transitions. winex11: Introduce a new window_update_client_config helper. winex11: Introduce a new window_update_client_state helper. winex11: Use the new window state tracker to get WM_STATE value. winex11: Use the new window state tracker to get _NET_WM_STATE value. d3d9/tests: Flush events after minimizing and restoring focus window.