- Add scanActive, scanCancel, scanPaused, scanPauseCh fields to Library struct - Create scan_control.go with CancelScan, PauseScan, ResumeScan, IsScanActive, IsScanPaused - Thread per-scan scanCtx through walk and worker pipeline - Add waitIfPaused checkpoint before each worker extraction - Skip orphan cleanup and variant generation on cancelled scan - Emit LibraryScanCancelled instead of LibraryScanComplete when cancelled