The high-level client `on_[SIGNAL]()` and low-level `add_message_handler()` should accept coroutine functions as handlers in addition to normal functions.