Unique Supply
A value of type UniqSupply is unique, and it can supply
one distinct Unique. Also, from the supply, one can also
manufacture an arbitrary number of further UniqueSupply
values, which will be distinct from the first and from all others.
Create a unique supply out of thin air. The "tag" (Char) supplied is
mostly cosmetic, making it easier to figure out where a Unique was
born. See Note [Uniques and tags].
The payload part of the Uniques allocated from this UniqSupply are
guaranteed distinct wrt all other supplies, regardless of their "tag".
This is achieved by allocating the payload part from a single source
of Uniques, namely genSym, shared across all UniqSupply's.