Compute proper branch ends for distributed branch decomposition
The problem with distributed branch decomposition is that the two ends of the branch are not guaranteed to be represented on every block that knows about each branch. This is fairly obvious for the outer (leaf) end of each branch, but it may also apply to the inner end. This merge request adds code to compute the proper branch ends for the distributed branch decomposition so that it can be used for analysis.