[karger_min_cut] Add Karger's randomized min cut algorithm

It depends on unionfind.py, and of course, its running time depends on
the union-find implementation's performance.
[karger_min_cut] Bug fixes
[karger_min_cut] Change return type (add namedtuple CutStruct)
[karger_min_cut] Fix "not actually keeping the min cut" bug in multi_run