Fix Python 3.12 build issues in thrift Python (#3276)

- Add pyproject.toml with setuptools build requirement for PEP 517 compliance
- Replace distutils imports with setuptools equivalents
- Use setuptools error names directly (CompileError, ExecError, PlatformError)
- Fix macOS header collision with ntohll/htonll macros in endian.h
- Add a matrix of MacOS versions (macos-15-intel, macos-14, macos-15,
  macos-26)
- Add a matrix of non-EOL Python versions for testing
- Remove MSVC2015 from the test matrix (very old).
- Support MSVC2022, the latest in AppVeyor.
- Upgrade tornado, twisted, and zope.interface versions to the first
  that support Python 3.12.
- Try to make the test_socket, RunClientServer, and TestServer tests less flaky.

This fixes the ModuleNotFoundError: No module named 'distutils' error
when building thrift with Python 3.12+.
diff --git a/lib/py/src/ext/endian.h b/lib/py/src/ext/endian.h
index 8f9e978..bf21a4f 100644
--- a/lib/py/src/ext/endian.h
+++ b/lib/py/src/ext/endian.h
@@ -29,6 +29,7 @@
 #else
 #include <netinet/in.h>
 
+#ifndef ntohll
 static inline unsigned long long ntohll(unsigned long long n) {
   union {
     unsigned long long f;
@@ -43,8 +44,11 @@
          | static_cast<unsigned long long>(u.t[5]) << 16
          | static_cast<unsigned long long>(u.t[6]) << 8 | static_cast<unsigned long long>(u.t[7]);
 }
+#endif
 
+#ifndef htonll
 #define htonll(n) ntohll(n)
+#endif
 
 #endif // !_WIN32