Defines operation unique for hash-consing types.
Also defines specialized hash sets for hash consing uniques of a specific type.
All sets offer a enterIfNew method which checks whether a type
with the given parts exists already and creates a new one if not.