possible future restructuring: 
I don't see if np.unique reverse index would help here.
For some cases we might want to require sorted arrays, like Stata and R ?

In the current implementation this is just a one time setup cost, because we are working with the cluster_lists. But it would be expensive if we use bootstrap with repeated instance creation.

aside: The interface used here to create cluster list should also be used in sandbox Mixed