tutorials: Use async-channel instead of the glib MainContext channel
The latter will be removed in favour of using async code in the future, and async code generally allows for more flexible message handling than the callback based MainContext channel.