Spawn a background thread to fetch latest version from GitHub Releases
and write the result to the lean-ctx data dir (latest-version.json).
Non-blocking, fire-and-forget. Skips if cache is fresh (<24h).
Respects update_check_disabled config and LEAN_CTX_NO_UPDATE_CHECK env var.
SemVer precedence on MAJOR.MINOR.PATCH[-prerelease]: a prerelease sorts
before its release (3.12.1-dogfood.9 < 3.12.1). Splitting the whole
string on . read 3.12.1-dogfood.9 as 3.12.9, so dogfood and rc builds
never saw their own release as an update.