fixing bfs_dist, adding METIS separator, add fuse_vertices()

changes to bfs_dist prevent nodes from being added to the stack multiple times

Metis separator is designed for bags that come from Dourisboure & Gavoille BFS algorithm, where each bag is composed of 2 lists with parent and child bags sharing a list.