Made partitions safer to create (avoid errors when passing non-disjoint sets).

Previously, the standard function for creating `Partition`s assumed disjoint sets but this wasn't clear from the name. Now `fromSets` accepts overlapping sets, and the more efficient `fromDisjointSets` makes it clear what it needs.