### Godot version

v4.0.beta17.mono.official [c40020513]

### System information

Windows 11 22H2

### Issue description

If the game window receives a mouse button down message but misses its corresponding button up message, `pressrc` will become permanently out of sync with the actual physical mouse state, and `ReleaseCapture()` will never be called.

https://github.com/godotengine/godot/blob/00302860541e9cccc59abd93b930af2a6e6ec360/platform/windows/display_server_windows.cpp#L3264-L3275

### Steps to reproduce

Run the MRP, click and hold the left mouse button in the main window, drag your cursor outside the window, then alt+tab to some non-Godot application, then release the mouse button.

Go back to the MRP windows, and observe that one window is completely unresponsive, and the other window can't be moved/resized/maximized/closed.

### Minimal reproduction project

[mouse_capture_bug.zip](https://github.com/godotengine/godot/files/10609122/mouse_capture_bug.zip)

case WM_MBUTTONDOWN: {
				MOUSEHOOKSTRUCT *ms = (MOUSEHOOKSTRUCT *)lParam;
				Point2i pos = Point2i(ms->pt.x, ms->pt.y) - _get_screens_origin();
				List<WindowID>::Element *C = nullptr;
				List<WindowID>::Element *E = popup_list.back();
				
				while (E) {
					
					Rect2i win_rect = Rect2i(window_get_position(E->get()), window_get_size(E->get()));
					
					Rect2i safe_rect = window_get_popup_safe_rect(E->get());
					if (win_rect.has_point(pos)) {
						break;
					} else if (safe_rect != Rect2i() && safe_rect.has_point(pos)) {
						break;
					} else {
						C = E;
						E = E->prev();
					}
				}
				if (C) {
					_send_window_event(windows[C->get()], DisplayServerWindows::WINDOW_EVENT_CLOSE_REQUEST);
					return 1;
				}
			} break;
		}
	}
	return ::CallNextHookEx(mouse_monitor, code, wParam, lParam);
}
LRESULT DisplayServerWindows::_handle_early_window_message(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {