Install a Ctrl+C/SIGTERM signal handler and share one shutdown signal
across the real-sync command consumer, the outbox worker, the
update-check loop, and the gRPC server, so a clean exit drains every
task and forces the WAL checkpoint via DatabaseEngine::close() instead
of the OS killing the process mid-write. The signal also finally
triggers the existing CoreCommand::Shutdown / CoreEvent::ShuttingDown
event-bus path outside of tests.
Refs #289