Add union operation and remove DeepEqual

Equals was based on a generic deep equal function. Now two sets are
considered as equal if all hash values of a set are contained in the set to be
compared.