Underlying Functions for Layering Tree Creation

Merge new methods for subdividing edges, fusing vertices (generalizes contract_edge) and finding METIS separators. Adding google test methods for the previous. All code has been uncrustified.