Given a piece of primary sequence information, reduce it to an index.
Will throw an assertion in debug code if
ps are not within bounds. Note
that mkPrimary [minBound] and mkPrimary [minBound,minBound] map to the
same index. Meaning that indices are only unique within the same length
group. Furthermore, indices with different (l,u)-bounds are not compatible
with each other. All indices start at 0.
The empty input produces an index of 0.
TODO currently goes the very inefficient way of creating a temporary vector
ps. We could in O(1) create a vector from a Primary ...