This patch introduces a sinkInstructions utility that sinks instructions
in a VPlan based on an Instruction -> Instruction mapping, as returned
by LoopVectorizationLegality::getSinkAfter. It also adds a
VPlanHCFGTransforms.cpp, for functions that do not rely on stuff
defined in LoopVectorize.cpp, to move to a more modular structure.
Once we migrated getSinkAfter to operate on a VPlan, we should change
this to not rely on the underlying values.
assert(isa) + cast?