This fixes the bug in the earlier multi-parent cloning implementation that was leading to non-deterministic (and incorrect) output.
The problem is that while updating sibling-to-sibling unwind edges for cloned funclets, the code to handle invokes was attempting to walk the unwind edges of the cloned funclets. As a result, it was likely to walk the catch-to-catch unwind chain before that chain was properly updated. This change just creates a second loop in updateSiblingToSiblingUnwind() so that the invoke processing happens after all of the other unwind edges are updated.
I've included just the changes since the previously committed revision (as reviewed in D13274), but since that commit has been reverted, I will be committing the previous change set in addition to these modifications when the review is complete.