[stdlib] Fix handling of duplicate items in generic Set.intersection
If the sequence passed to `Set.intersection` has exactly as many duplicate items as items missing from `self`, then the new implementation in 5.6 will mistakenly return `self` unchanged. (It counts duplicate hits as distinct items in the result.)
rdar://94803458
(cherry picked from commit 01d7b5799cbf816e6669f2611817c590c1b2c4fb)