Better synchronization primitives for Zig’s `std.Io`

Zig’s std.Io interface, introduced in version 0.16, comes with a number of synchronization primitives, from low-level ones like std.Io.Mutex and std.Io.Condition to higher-level ones like std.Io.Queue. These are all implemented on top of the futexWait/futexWake functions in the std.Io vtable. There are three problems with them: