Simplify shm_unix SharedMemoryRegistry
The SharedMemoryRegistry now directly keeps a list of socket paths to unlink in the atexit handler.
Before, there were two minor issues:
- Unsynchronized access to some SharedMemory members between open() and close(AtExit), and close(AtExit) nulling data_ptr_ and search threads using it, though of course only when we were about to exit anyway.
- Moved from socket_path_ not nescessarily emptied and would then be unlinked, though I don't think any C++ implementation actually does that.
Also now just one atomic linked list away from a signal-safe cleanup_at_exit(), but one step further from a shared memory implementation that needs more general global cleanup work.
closes https://github.com/official-stockfish/Stockfish/pull/7030
No functional change