Fixes release blocker issue #3492 and #3790.

Make zlib and zipimport to return bytes instead of bytearray and use bytes
rather than bytearray for their internal leftover data storages.
diff --git a/Modules/zlibmodule.c b/Modules/zlibmodule.c
index 3fa84d9..35f7bbb 100644
--- a/Modules/zlibmodule.c
+++ b/Modules/zlibmodule.c
@@ -96,12 +96,12 @@
     if (self == NULL)
 	return NULL;
     self->is_initialised = 0;
-    self->unused_data = PyByteArray_FromStringAndSize("", 0);
+    self->unused_data = PyBytes_FromStringAndSize("", 0);
     if (self->unused_data == NULL) {
 	Py_DECREF(self);
 	return NULL;
     }
-    self->unconsumed_tail = PyByteArray_FromStringAndSize("", 0);
+    self->unconsumed_tail = PyBytes_FromStringAndSize("", 0);
     if (self->unconsumed_tail == NULL) {
 	Py_DECREF(self);
 	return NULL;
@@ -178,7 +178,7 @@
 
     err=deflateEnd(&zst);
     if (err == Z_OK)
-	ReturnVal = PyByteArray_FromStringAndSize((char *)output,
+	ReturnVal = PyBytes_FromStringAndSize((char *)output,
                                               zst.total_out);
     else
 	zlib_error(zst, err, "while finishing compression");
@@ -219,14 +219,14 @@
     zst.avail_in = length;
     zst.avail_out = r_strlen;
 
-    if (!(result_str = PyByteArray_FromStringAndSize(NULL, r_strlen))) {
+    if (!(result_str = PyBytes_FromStringAndSize(NULL, r_strlen))) {
 	PyBuffer_Release(&pinput);
 	return NULL;
     }
 
     zst.zalloc = (alloc_func)NULL;
     zst.zfree = (free_func)Z_NULL;
-    zst.next_out = (Byte *)PyByteArray_AS_STRING(result_str);
+    zst.next_out = (Byte *)PyBytes_AS_STRING(result_str);
     zst.next_in = (Byte *)input;
     err = inflateInit2(&zst, wsize);
 
@@ -266,12 +266,12 @@
 	    /* fall through */
 	case(Z_OK):
 	    /* need more memory */
-	    if (PyByteArray_Resize(result_str, r_strlen << 1) < 0) {
+	    if (_PyBytes_Resize(&result_str, r_strlen << 1) < 0) {
 		inflateEnd(&zst);
 		goto error;
 	    }
 	    zst.next_out =
-                (unsigned char *)PyByteArray_AS_STRING(result_str) + r_strlen;
+                (unsigned char *)PyBytes_AS_STRING(result_str) + r_strlen;
 	    zst.avail_out = r_strlen;
 	    r_strlen = r_strlen << 1;
 	    break;
@@ -288,7 +288,7 @@
 	goto error;
     }
 
-    if (PyByteArray_Resize(result_str, zst.total_out) < 0)
+    if (_PyBytes_Resize(&result_str, zst.total_out) < 0)
         goto error;
 
     PyBuffer_Release(&pinput);
@@ -417,7 +417,7 @@
     input = pinput.buf;
     inplen = pinput.len;
 
-    if (!(RetVal = PyByteArray_FromStringAndSize(NULL, length))) {
+    if (!(RetVal = PyBytes_FromStringAndSize(NULL, length))) {
 	PyBuffer_Release(&pinput);
 	return NULL;
     }
@@ -428,7 +428,7 @@
     self->zst.avail_in = inplen;
     self->zst.next_in = input;
     self->zst.avail_out = length;
-    self->zst.next_out = (unsigned char *)PyByteArray_AS_STRING(RetVal);
+    self->zst.next_out = (unsigned char *)PyBytes_AS_STRING(RetVal);
 
     Py_BEGIN_ALLOW_THREADS
     err = deflate(&(self->zst), Z_NO_FLUSH);
@@ -437,13 +437,13 @@
     /* while Z_OK and the output buffer is full, there might be more output,
        so extend the output buffer and try again */
     while (err == Z_OK && self->zst.avail_out == 0) {
-	if (PyByteArray_Resize(RetVal, length << 1) < 0) {
+	if (_PyBytes_Resize(&RetVal, length << 1) < 0) {
             Py_DECREF(RetVal);
             RetVal = NULL;
 	    goto error;
         }
 	self->zst.next_out =
-            (unsigned char *)PyByteArray_AS_STRING(RetVal) + length;
+            (unsigned char *)PyBytes_AS_STRING(RetVal) + length;
 	self->zst.avail_out = length;
 	length = length << 1;
 
@@ -462,7 +462,7 @@
 	RetVal = NULL;
 	goto error;
     }
-    if (PyByteArray_Resize(RetVal, self->zst.total_out - start_total_out) < 0) {
+    if (_PyBytes_Resize(&RetVal, self->zst.total_out - start_total_out) < 0) {
         Py_DECREF(RetVal);
         RetVal = NULL;
     }
@@ -509,7 +509,7 @@
     /* limit amount of data allocated to max_length */
     if (max_length && length > max_length)
 	length = max_length;
-    if (!(RetVal = PyByteArray_FromStringAndSize(NULL, length))) {
+    if (!(RetVal = PyBytes_FromStringAndSize(NULL, length))) {
 	PyBuffer_Release(&pinput);
 	return NULL;
     }
@@ -520,7 +520,7 @@
     self->zst.avail_in = inplen;
     self->zst.next_in = input;
     self->zst.avail_out = length;
-    self->zst.next_out = (unsigned char *)PyByteArray_AS_STRING(RetVal);
+    self->zst.next_out = (unsigned char *)PyBytes_AS_STRING(RetVal);
 
     Py_BEGIN_ALLOW_THREADS
     err = inflate(&(self->zst), Z_SYNC_FLUSH);
@@ -542,13 +542,13 @@
 	if (max_length && length > max_length)
 	    length = max_length;
 
-	if (PyByteArray_Resize(RetVal, length) < 0) {
+	if (_PyBytes_Resize(&RetVal, length) < 0) {
             Py_DECREF(RetVal);
             RetVal = NULL;
 	    goto error;
         }
 	self->zst.next_out =
-            (unsigned char *)PyByteArray_AS_STRING(RetVal) + old_length;
+            (unsigned char *)PyBytes_AS_STRING(RetVal) + old_length;
 	self->zst.avail_out = length - old_length;
 
 	Py_BEGIN_ALLOW_THREADS
@@ -560,7 +560,7 @@
        of specified size. Return the unconsumed tail in an attribute.*/
     if(max_length) {
 	Py_DECREF(self->unconsumed_tail);
-	self->unconsumed_tail = PyByteArray_FromStringAndSize((char *)self->zst.next_in,
+	self->unconsumed_tail = PyBytes_FromStringAndSize((char *)self->zst.next_in,
 							   self->zst.avail_in);
 	if(!self->unconsumed_tail) {
 	    Py_DECREF(RetVal);
@@ -577,7 +577,7 @@
     */
     if (err == Z_STREAM_END) {
 	Py_XDECREF(self->unused_data);  /* Free original empty string */
-	self->unused_data = PyByteArray_FromStringAndSize(
+	self->unused_data = PyBytes_FromStringAndSize(
 	    (char *)self->zst.next_in, self->zst.avail_in);
 	if (self->unused_data == NULL) {
 	    Py_DECREF(RetVal);
@@ -594,7 +594,7 @@
 	goto error;
     }
 
-    if (PyByteArray_Resize(RetVal, self->zst.total_out - start_total_out) < 0) {
+    if (_PyBytes_Resize(&RetVal, self->zst.total_out - start_total_out) < 0) {
         Py_DECREF(RetVal);
         RetVal = NULL;
     }
@@ -627,10 +627,10 @@
     /* Flushing with Z_NO_FLUSH is a no-op, so there's no point in
        doing any work at all; just return an empty string. */
     if (flushmode == Z_NO_FLUSH) {
-	return PyByteArray_FromStringAndSize(NULL, 0);
+	return PyBytes_FromStringAndSize(NULL, 0);
     }
 
-    if (!(RetVal = PyByteArray_FromStringAndSize(NULL, length)))
+    if (!(RetVal = PyBytes_FromStringAndSize(NULL, length)))
 	return NULL;
 
     ENTER_ZLIB
@@ -638,7 +638,7 @@
     start_total_out = self->zst.total_out;
     self->zst.avail_in = 0;
     self->zst.avail_out = length;
-    self->zst.next_out = (unsigned char *)PyByteArray_AS_STRING(RetVal);
+    self->zst.next_out = (unsigned char *)PyBytes_AS_STRING(RetVal);
 
     Py_BEGIN_ALLOW_THREADS
     err = deflate(&(self->zst), flushmode);
@@ -647,13 +647,13 @@
     /* while Z_OK and the output buffer is full, there might be more output,
        so extend the output buffer and try again */
     while (err == Z_OK && self->zst.avail_out == 0) {
-	if (PyByteArray_Resize(RetVal, length << 1) < 0) {
+	if (_PyBytes_Resize(&RetVal, length << 1) < 0) {
             Py_DECREF(RetVal);
             RetVal = NULL;
 	    goto error;
         }
 	self->zst.next_out =
-            (unsigned char *)PyByteArray_AS_STRING(RetVal) + length;
+            (unsigned char *)PyBytes_AS_STRING(RetVal) + length;
 	self->zst.avail_out = length;
 	length = length << 1;
 
@@ -687,7 +687,7 @@
 	goto error;
     }
 
-    if (PyByteArray_Resize(RetVal, self->zst.total_out - start_total_out) < 0) {
+    if (_PyBytes_Resize(&RetVal, self->zst.total_out - start_total_out) < 0) {
         Py_DECREF(RetVal);
         RetVal = NULL;
     }
@@ -822,7 +822,7 @@
 	PyErr_SetString(PyExc_ValueError, "length must be greater than zero");
 	return NULL;
     }
-    if (!(retval = PyByteArray_FromStringAndSize(NULL, length)))
+    if (!(retval = PyBytes_FromStringAndSize(NULL, length)))
 	return NULL;
 
 
@@ -830,7 +830,7 @@
 
     start_total_out = self->zst.total_out;
     self->zst.avail_out = length;
-    self->zst.next_out = (Byte *)PyByteArray_AS_STRING(retval);
+    self->zst.next_out = (Byte *)PyBytes_AS_STRING(retval);
 
     Py_BEGIN_ALLOW_THREADS
     err = inflate(&(self->zst), Z_FINISH);
@@ -839,12 +839,12 @@
     /* while Z_OK and the output buffer is full, there might be more output,
        so extend the output buffer and try again */
     while ((err == Z_OK || err == Z_BUF_ERROR) && self->zst.avail_out == 0) {
-	if (PyByteArray_Resize(retval, length << 1) < 0) {
+	if (_PyBytes_Resize(&retval, length << 1) < 0) {
             Py_DECREF(retval);
             retval = NULL;
 	    goto error;
         }
-	self->zst.next_out = (Byte *)PyByteArray_AS_STRING(retval) + length;
+	self->zst.next_out = (Byte *)PyBytes_AS_STRING(retval) + length;
 	self->zst.avail_out = length;
 	length = length << 1;
 
@@ -866,7 +866,7 @@
 	    goto error;
 	}
     }
-    if (PyByteArray_Resize(retval, self->zst.total_out - start_total_out) < 0) {
+    if (_PyBytes_Resize(&retval, self->zst.total_out - start_total_out) < 0) {
         Py_DECREF(retval);
         retval = NULL;
     }