Add Union-Find QuickFind realization

Union-Find could be used in minimum spanning tree Kruskal's
algorithm. QuickFind is a preliminary, cumbersome Union-Find
implementation version.
Add Union-Find QuickUnion realization

Try QuickUnion as better than QuickFind choice for
Union-Find implemenation. But thius is still not a
best choice. Trees can get tall and find is too
expensive: O(N)
Add weighted QuickUnion Union-Find implementation

Weighted quick-union implementation of Union-Find has better
performance than simple quick-union:
initialize: O(N)
union:      O(lgN) (includes cost of finding roots)
connected:  O(lgN) (includes cost of finding roots)
Add path compression in Weighted QuickUnion

Path compression facilitates Union_find complexity
to be linear in practice [Hopcoff-Ulman, Tarjan].
In theory complexion is (N + Mlg*(N))
Merge branch 'feature/mst' into develop
Add Minimum Spanning Tree Interface

Add an interface class for mst. MST could be used in solving various,
huge amount of problems
Merge branch 'feature/min_span_tree' into feature/minimum_spanning_tree

Conflicts:
	classic_algorithms/classic_algorithms.cpp
	classic_algorithms2/graphs/mst.h