imaplib: IMAP4 constructor closes the socket on error

Fix a ResourceWarning(unclosed socket) if an exception is raised in the
constructor after the creation of the socket. Patch written by Nadeem Vawda.
diff --git a/Lib/imaplib.py b/Lib/imaplib.py
index 9c38e1c..8c14728 100644
--- a/Lib/imaplib.py
+++ b/Lib/imaplib.py
@@ -169,6 +169,17 @@
 
         self.open(host, port)
 
+        try:
+            self._connect()
+        except Exception:
+            try:
+                self.shutdown()
+            except socket.error:
+                pass
+            raise
+
+
+    def _connect(self):
         # Create unique tag for this session,
         # and compile tagged response matcher.