use proper check if sets are disjoint
change ProductSet to accept and produce Set values

The usage of ImmutableSet is unnecessary and may complicate usage.
update project URL