[ATR-22532] Change ComboHypo deduplication logic
See JIRA for details.
This extends the ComboHypo deduplication logic to deal with 3+ legs.
Duplicated features are removed from all but the leg which has the smallest margin with respect to the leg's current number of features and the leg's multiplicity requirement. If tied between legs, the lower numbered leg gets to keep the feature.
If a leg seeds off of the FullScan ROI, then it should be assumed to be satisfied. Such that it keeps active until the Step which does the actual processing for the leg runs. To include this logic, we introduce as many new unique feature hashes as is required to satisfy the multiplicity on the leg if the only feature is deduced to be a FS ROI.