util/set: remove trait `Subtract`, modify `Difference`
util/set: remove trait `Subtract`, modify `Difference`

Sometimes a set-like object will need to change type when it e.g.
becomes empty; this could be required to satisfy certain invariants
and the changes in this commit allow that.

insaneinside/cripes