v1.8.0 — migrate to framework 1.51.0 Notifications APIs
EmailChannel implements RichNotificationChannel (structured NotificationResult: provider message id, latency, no_recipient/transport_exception error codes); send(): bool now delegates to sendNotification().
boot() wires via registerNotificationChannel()/registerNotificationExtension() (the framework no longer hardcodes this provider).
register() merges retry config under channel-agnostic notifications.retry.
composerVersion() reads extra.glueful.version; bump framework to ^1.51.0, version 1.8.0.