After a Sparkle auto-update relaunches cmux, the control socket stops
accepting connections because start() early-returns when isRunning is
true, without checking if the accept loop thread is actually alive.
- Add acceptLoopAlive flag to track accept loop thread liveness
- Fix start() early-return to also check acceptLoopAlive, so a dead
thread triggers full socket re-creation
- Break acceptLoop() after 50 consecutive accept() failures with 10ms
backoff instead of tight-spinning forever
- Clean up socket in applicationWillTerminate and
updaterWillRelaunchApplication for clean teardown before relaunch