This is setting up to fix bug 37573 cleanly. Although this is NFC, it involves introducing a header file for some outliner data structures. If possible, I'd like a bit of input on how I've set up the header file etc. Other than that, the changes are
- Renaming things to fit the new header file
- Removing the vector of std::pairs that was used to communicate candidate information between the target and the outliner.
This moves data structures that are technically both used in some way by the target and the general-purpose outlining algorithm into MachineOutliner.h. In particular, the Candidate class is of importance.
Before, the outliner passed the locations of Candidates to the target, which would then make some decisions about the prospective outlined function. This change allows us to just pass Candidates along to the target. This will allow the target to discard Candidates that would be considered unsafe before cost calculation. Thus, we will be able to remove the unsafe candidates described in the bug without resorting to torching the entire prospective function.
Also, as a side-effect, it makes the outliner a bit cleaner.