This is based on an idea from jah in http://seclists.org/nmap-dev/2012/q1/655. Make ScanChooser and DiffWindow take a flat list of scans, not a dict of names → scans, and centralize the deduplication in ScanChooser.add_scan.