When using TreeTransform to rebuild a coroutine the coroutine promise_type variable is not transformed because it's stored in the FunctionScopeInfo and not as a regular sub-statement of the function.
This patch attempts to fix this by rebuilding the promise variable at the start of transforming a CoroutineBodyStmt. Additionally this patch changes TransformCoroutineBodyStmt so that it always re-builds the coroutine body. Is there a better alternative to always rebuilding the body? Or is always rebuilding sufficient for now?
Note: This patch also moves the location of some diagnostics from the location of a co_foo keyword to the function declaration.