Add support for splitting critical edges coming from an indirect jump
using a jump table ("switch jumps").
This introduces the TargetInstrInfo::getJumpTableIndex callback to
allows targets to return an index into MachineJumpTableInfo for a
given indirect jump. It also updates to
MachineBasicBlock::SplitCriticalEdge to allow splitting of critical
edges by rewriting jump table entries.
This is largely based on work done by Zhixuan Huan in D132202.
Have we proven at this point that this jump is the only use of the jump table in question? With optimizations like tail duplication, you could have multiple basic blocks referencing the same table.