- CurrentUser pasa de enum a struct con `id` opcional (anónimo = None) y
preferencias de idioma, zona horaria y tema validadas en `with_*()`.
- `RequestLocale` tiene en cuenta el idioma preferido del usuario, y
Context usa su tema si lo tiene (`default_theme()` en otro caso).
- Nuevos componentes `form::SelectLanguage`, `form::SelectTheme` y
`form::SelectTimezone`, con `Timezone::supported_by_region()` para
listar y validar las zonas IANA ofrecidas.