A partition of n_items is a set of subsets such that the subsets are mutually exclusive,
nonempty, and exhaustive. This data structure enforces mutually exclusivity and provides
methods to test for the other two properties:
subsets_are_nonempty and
subsets_are_exhaustive.
Zero-based numbering is used, e.g., the first
item is index 0 and the first subset is subset 0. When a subset is added to the data structure,
the next available integer label is used for its subset index. To remove empty subsets and
relabel subsets into the canonical form, use the
canonicalize method.