The changes here introduce VPExternalDef specialization for VPValues. When constructing VPlan for a candidate loop in the native path, we now create a VPExternalDef when the corresponding underlying value is defined outside the candidate loop.
This change allows us to share the same set of VPExternalDefs in different VPlans constructed for a candidate loop. The sub-class can also be used to infer a VPValue uniformity in VPlan based divergence analysis. These changes will be posted in subsequent follow up patches.