Fix bug reported by Harri Pasanen: gzip + cPickle doesn't work.  The
problem was a couple of bugs in the readline implementation.

1. Include the '\n' in the string returned by readline
2. Bug calculating new buffer size in _unread

Also remove unncessary import of StringIO
diff --git a/Lib/gzip.py b/Lib/gzip.py
index 9c5ff0c..fda1121 100644
--- a/Lib/gzip.py
+++ b/Lib/gzip.py
@@ -1,7 +1,6 @@
 import time
 import string
 import zlib
-import StringIO
 import __builtin__
 
 # implements a python function that reads and writes a gzipped file
@@ -157,7 +156,7 @@
     def writelines(self,lines):
         self.write(string.join(lines))
 
-    def read(self,size=None):
+    def read(self, size=None):
         if self.extrasize <= 0 and self.fileobj is None:
             return ''
 
@@ -185,7 +184,7 @@
 
     def _unread(self, buf):
         self.extrabuf = buf + self.extrabuf
-        self.extrasize = len(buf) + self.extrasize
+        self.extrasize = len(self.extrabuf)
 
     def _read(self, size=1024):
         try:
@@ -250,7 +249,7 @@
             c = self.read(readsize)
             i = string.find(c, '\n')
             if i >= 0 or c == '':
-                bufs.append(c[:i])
+                bufs.append(c[:i+1])
                 self._unread(c[i+1:])
                 return string.join(bufs, '')
             bufs.append(c)