Fix cursor not restored after Ctrl-C during progress bar
at_exit hooks don't run on SIGINT — the process is killed before they
fire. Install a SIGINT handler that restores the cursor then re-raises
with the default handler so the process exits with the correct signal
status (128+SIGINT).