Backported changes from master

Handles both lower and upper bound result
Multiple improvements

Improved placement precision in the legalizer
Both lower and upper bound placements can now be chosen when calculating the weights in the solver
Changes backported
Modified the files and fixed some bugs to handle new code
Added geometric min-cut as well as a few improvements
Changes on the main files merged