asyncio: sync with Tulip

- repr(Task) and repr(CoroWrapper) now also includes where these objects were
  created. If the coroutine is not a generator (don't use "yield from"), use
  the location of the function, not the location of the coro() wrapper.
- Fix create_task(): truncate the traceback to hide the call to create_task().
diff --git a/Lib/asyncio/coroutines.py b/Lib/asyncio/coroutines.py
index 48730c2..4cbfa85 100644
--- a/Lib/asyncio/coroutines.py
+++ b/Lib/asyncio/coroutines.py
@@ -57,7 +57,7 @@
 
 
 class CoroWrapper:
-    # Wrapper for coroutine in _DEBUG mode.
+    # Wrapper for coroutine object in _DEBUG mode.
 
     def __init__(self, gen, func):
         assert inspect.isgenerator(gen), gen
@@ -68,8 +68,11 @@
         # decorator
 
     def __repr__(self):
-        return ('<%s %s>'
-                % (self.__class__.__name__, _format_coroutine(self)))
+        coro_repr = _format_coroutine(self)
+        if self._source_traceback:
+            frame = self._source_traceback[-1]
+            coro_repr += ', created at %s:%s' % (frame[0], frame[1])
+        return '<%s %s>' % (self.__class__.__name__, coro_repr)
 
     def __iter__(self):
         return self
@@ -181,9 +184,18 @@
         coro_name = coro.__name__
 
     filename = coro.gi_code.co_filename
-    if coro.gi_frame is not None:
+    if (isinstance(coro, CoroWrapper)
+    and not inspect.isgeneratorfunction(coro.func)):
+        filename, lineno = events._get_function_source(coro.func)
+        if coro.gi_frame is None:
+            coro_repr = '%s() done, defined at %s:%s' % (coro_name, filename, lineno)
+        else:
+            coro_repr = '%s() running, defined at %s:%s' % (coro_name, filename, lineno)
+    elif coro.gi_frame is not None:
         lineno = coro.gi_frame.f_lineno
-        return '%s() at %s:%s' % (coro_name, filename, lineno)
+        coro_repr = '%s() running at %s:%s' % (coro_name, filename, lineno)
     else:
         lineno = coro.gi_code.co_firstlineno
-        return '%s() done at %s:%s' % (coro_name, filename, lineno)
+        coro_repr = '%s() done, defined at %s:%s' % (coro_name, filename, lineno)
+
+    return coro_repr