b5ef09ff

By: Michael Lynch <git@mtlynch.io>

Reduce coupling in email auth by consolidating duplicated code and moving types to proper packages

- Delete NewTokenCreator (duplicated by NewSender); dev build uses NewSender with no-op email func
- Remove AllowWithRateLimit param and ErrRateLimited from magiclogin; rate limiting stays in the
  outer LoginTokenCreator closure where the client IP is available
- Move SMTP config types from domain package (little_moments) into magiclogin/loginmail/smtp
- Move EmailMessage and SendFunc into magiclogin/loginmail
- Extract mustParseSMTPConfig() in email_sender_prod.go to separate config parsing from wiring
- Return token entry from prod LoginTokenCreator instead of silently discarding it

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
configuredevShellbackendbackend-devcheck-bashcheck-frontendcheck-go-formattingcheck-go-test-packagescheck-trailing-newlinecheck-trailing-whitespacediagramdocker-imagee2e-testsgo-testsimport-from-tinybeanslint-sqllittle-momentslittle-moments-devx86_64-linux