GLX: Fix a potential deadlock in OnDisplayClosed.
In OnDisplayClosed, unlock the __glXDisplayInfoHash lock before locking glxContextHashLock. In CommonMakeCurrent, it holds glxContextHashLock while it tries to take the __glXDisplayInfoHash lock, so if CommonMakeCurrent and OnDisplayClosed run at the same time, they could deadlock. To avoid that, OnDisplayClosed will set a new inTeardown flag in the __GLXdisplayInfoHash, then it will unlock the display hash before calling __glXDisplayClosed. After __glXDisplayClosed is finished, OnDisplayClosed will lock __glXDisplayInfoHash again long enough to remove the display from the hashtable. The inTeardown flag tells __glXLookupDisplay to return NULL, since after that point, nothing should be trying to look up the display. In principle, we could just remove the display from the hashtable up front, but then if something did try to look up the display, then __glXLookupDisplay would try to create a new __GLXdisplayInfo for it. Fixes glvnd/libglvnd#213