Currency conversion and password robustness

FX:
  - Authenticated GET /rates endpoint; FX engine moved to the Currency context
  - Currency converter screen + FX budget hint
  - Consistent, currency-correct conversions across all screens (expenses
    shown in the user's preferred currency)
  
Password robustness:
  - Server-side password policy (min 12 + lowercase, uppercase, digit,
    special char) enforced on registration and password change
  - HaveIBeenPwned breached-password check (fail-open on outage)
  - Frontend strength meter + rule hint on register and profile
 
Tooling: front-lint make target (angular-eslint) wired into pre-commit.