Two bugs prevented official bots from joining the external tournament-server:
1. JWT claim mismatch — bot tokens lacked the `isBot: true` claim the
tournament server requires. Added the claim to generateBotToken() in
AccountService, which covers both user-owned bots and official bots.
2. Broken join flow — TournamentBotGamePlayer.joinTournament() called
registerBot() which hit POST /api/auth/register on the tournament server,
an endpoint that does not exist. Removed registerBot() and updated
JoinTournamentRequest to accept a botToken field so the caller supplies
the pre-existing NowChessSystems token directly.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>