Rename struct.unpack() 2nd parameter to "buffer"

Issue #29300: Rename struct.unpack() second parameter from "inputstr" to
"buffer", and use the Py_buffer type.

Fix also unit tests on struct.unpack() which passed a Unicode string instead of
a bytes string as struct.unpack() second parameter. The purpose of
test_trailing_counter() is to test invalid format strings, not to test the
buffer parameter.
diff --git a/Modules/_struct.c b/Modules/_struct.c
index 3626bad..78cd0f3 100644
--- a/Modules/_struct.c
+++ b/Modules/_struct.c
@@ -2162,7 +2162,7 @@
 unpack
 
     format: object
-    inputstr: object
+    buffer: Py_buffer
     /
 
 Return a tuple containing values unpacked according to the format string.
@@ -2173,8 +2173,8 @@
 [clinic start generated code]*/
 
 static PyObject *
-unpack_impl(PyObject *module, PyObject *format, PyObject *inputstr)
-/*[clinic end generated code: output=06951d66eae6d63b input=4b81d54988890f5e]*/
+unpack_impl(PyObject *module, PyObject *format, Py_buffer *buffer)
+/*[clinic end generated code: output=f75ada02aaa33b3b input=654078e6660c2df0]*/
 {
     PyStructObject *s_object;
     PyObject *result;
@@ -2182,7 +2182,7 @@
     s_object = cache_struct(format);
     if (s_object == NULL)
         return NULL;
-    result = Struct_unpack(s_object, inputstr);
+    result = Struct_unpack_impl(s_object, buffer);
     Py_DECREF(s_object);
     return result;
 }