Producer/consumer shared state with async waker-based notification.
This crate provides [Producer] and [Consumer] types that share state through
a mutex-protected value. Producers can modify the state and consumers are
automatically notified via async wakers. The channel auto-closes when all
producers are dropped.