The goal is to support alternative policies for eviction, e.g. via
ML-trained policy. Such alternatives would be made available as
alternative implementations of RegAllocEvictionAdvisor, and the
RegAllocEvictionAdvisorAnalysis would make the switch between them.
The bulk of the change moves code from RegAllocGreedy.cpp to the
advisor. The change also renames canEvictInterference to
shouldEvictInterference to suggest this is a question of
profitability, not necessarily correctness.
RFC: https://lists.llvm.org/pipermail/llvm-dev/2021-November/153639.html