Address review feedback:
- store() now maps the failure to the right message (invalid credentials vs
rate-limited vs statement-still-generating) instead of always reporting
'invalid token or query ID'.
- Add connect/read timeouts to the Flex HTTP calls so a slow IB can't hang the
synchronous connect past the gateway timeout.
- Classify an invalid/deleted Flex Query ID as an auth failure so the user is
prompted to fix credentials instead of retrying 'temporarily unavailable'
forever.
- Skip NAV rows without a total so a malformed row can't store a 0 balance.
- connections.tsx isApiKeyProvider derives from CONNECT_PROVIDERS instead of a
hardcoded list; drop an orphaned es.json key.