fix: handle token refresh race condition in serverless environments
When concurrent requests trigger token refresh simultaneously across
different isolates (e.g., Val Town, Deno Deploy), the second request
would fail with 'Refresh token replayed' error.
Now gracefully handles this by:
- Detecting the 'replayed' error from OAuth servers
- Waiting briefly for the other process to save
- Re-reading the session from storage to get fresh tokens
Also adds:
- errorDescription field on TokenExchangeError
- Proper JSON parsing of OAuth error responses