Restore the saved language on retry
Retrying a past coding attempt currently restores its problem, duration, loop, and mode but starts the next interview with Python regardless of the saved language.
This change carries the saved language into the interview URL and restores it only when the problem offers it. Missing, unknown, or unavailable languages retain the existing Python fallback, and a delayed C selection does not replace a language the candidate has already chosen or edited.
Tests cover retrying a JavaScript attempt, restoring an offered language, retaining Python for an unavailable language, and restoring C only after a compatible judge loads.
Closes #310
Summary by cubic
Retrying a past coding attempt now restores its saved language instead of always starting the interview in Python.
The language is only restored when the problem offers it; missing, unknown, or unavailable languages keep the Python fallback, and a delayed C judge no longer overrides a language the candidate has already selected, edited with, or run tests with.
Closes #310.