This patch turns updates VPInstruction to manage the value it defines
using VPDef. The VPValue is used during VPlan construction and
codegeneration instead of the plain IR reference where possible.
Is this still possible? Shouldn't e.g. WidenMemoryInstruction, InterleaveGroup, WidenCall recipes hold an empty VPDef for stores / functions returning void?