bpo-39048: Look up __aenter__ before __aexit__ in async with (GH-17609)

* Reorder the __aenter__ and __aexit__ checks for async with
* Add assertions for async with body being skipped
* Swap __aexit__ and __aenter__ loading in the documentation
diff --git a/Doc/reference/compound_stmts.rst b/Doc/reference/compound_stmts.rst
index 564d6cc..e2f44a5 100644
--- a/Doc/reference/compound_stmts.rst
+++ b/Doc/reference/compound_stmts.rst
@@ -844,8 +844,8 @@
 is semantically equivalent to::
 
     manager = (EXPRESSION)
-    aexit = type(manager).__aexit__
     aenter = type(manager).__aenter__
+    aexit = type(manager).__aexit__
     value = await aenter(manager)
     hit_except = False