The changes contained in this patch are:
- Defines a new AST node CoawaitDependentExpr for representing co_await expressions while the promise type is still dependent.
- Correctly detect and transform the 'co_await' operand to p.await_transform(<expr>) when possible.
- Change the initial/final suspend points to build during the initial parse, so they have the correct operator co_await lookup results.
- Fix transformation of the CoroutineBodyStmt so that it doesn't re-build the final/initial suspends.
@rsmith: This change is a little big, but it's not trivial for me to split it up. Please let me know if you would prefer this submitted as multiple patches.
I would go with just isImplicit, to match other similar uses throughout the AST. Also maybe sink this into the Stmt bitfields to make this class 8 bytes smaller