Registry of notification delivery channels.
list/0 returns core channels first, then channels contributed by feature
modules via PhoenixKit.Module's notification_channels/0 — the same
core-first, dedupe-by-key, rescue-guarded merge that
PhoenixKit.Notifications.Types.list/0 uses for types. A module channel whose
key/0 collides with a core (or already-seen) key is dropped with a warning,
so core always wins.
Every entry is a module implementing PhoenixKit.Notifications.Channel.