Define PY_SSIZE_T_CLEAN to use PyObject_CallFunction

When using the building functions for the fallback scenario
in readBytes, a SystemError is raised in python 3.10 (raised
as a warning till python 3.9) due to the use of "#yi" for the output
buffer argument.

Extra test cases are added to cover serialization/deserialization
both with compact & binary protocol both with and without the
c-extension
diff --git a/lib/py/src/ext/binary.cpp b/lib/py/src/ext/binary.cpp
index 85d8d92..423fa8f 100644
--- a/lib/py/src/ext/binary.cpp
+++ b/lib/py/src/ext/binary.cpp
@@ -17,6 +17,7 @@
  * under the License.
  */
 
+#define PY_SSIZE_T_CLEAN
 #include "ext/binary.h"
 namespace apache {
 namespace thrift {