* MultiServer: fix wrong missing for empty state w/o speedups
* Tests: fix some tests not being run
* Tests: add test for set intersection with LocationStore
* Server: allow games with no locations again
* Server: validate locations in pure python implementation
and rework tests
* Server: fix tests for py<3.11
* MultiServer: speed up location commands
Adds optimized pure python wrapper around locations dict
Adds optimized cython implementation of the wrapper, saving cpu time and 80% memory use
* Speedups: auto-build on import and build during setup
* Speedups: add requirements
* CI: don't break with build_ext
* Speedups: use C++ compiler for pyximport
* Speedups: cleanup and more validation
* Speedups: add tests for LocationStore
* Setup: delete temp in-place build modules
* Speedups: more tests and safer indices
The change has no security implications, but ensures that entries[IndexEntry.start] is always valid.
* Speedups: add cython3 compatibility
* Speedups: remove unused import
* Speedups: reformat
* Speedup: fix empty set in test
* Speedups: use regular dict in Locations.get_for_player
* CI: run unittests with beta cython
now with 2x nicer names