asyncio.subprocess: Fix a race condition in communicate()

Use self._loop instead of self._transport._loop, because transport._loop is set
to None at process exit.
diff --git a/Lib/asyncio/subprocess.py b/Lib/asyncio/subprocess.py
index c3b0175..414e023 100644
--- a/Lib/asyncio/subprocess.py
+++ b/Lib/asyncio/subprocess.py
@@ -146,7 +146,6 @@
 
     @tasks.coroutine
     def communicate(self, input=None):
-        loop = self._transport._loop
         if input:
             stdin = self._feed_stdin(input)
         else:
@@ -160,7 +159,7 @@
         else:
             stderr = self._noop()
         stdin, stdout, stderr = yield from tasks.gather(stdin, stdout, stderr,
-                                                        loop=loop)
+                                                        loop=self._loop)
         yield from self.wait()
         return (stdout, stderr)