Handle SIGINT for clean shutdown (fixes GH-2)