Add special case for HashSet.--

When the argument in -- is also a HashSet, we can use diff, which is
quicker than removing the elements one by one.
SI-6200 - HashMap should implement filter

This is the exact same algorithm as in SI-6196, with only slight
differences due to the two type arguments of HashMap.

Filter is tested by the new comparative collection test by @Ichoran, but
there is nevertheless a small correctness test in t6200 in addition to
tests of the new desirable behavior.