According to the PDTS it's perfectly legal to have a promise type that defines neither return_value nor return_void. However a coroutine that uses such a promise type will almost always have UB, because it can never co_return.
This patch changes Clang to diagnose such cases as an error. It also cleans up some of the diagnostic messages relating to member lookup in the promise type.