The changes here introduce VPConstant specialization for VPValues. When constructing VPlan for a candidate loop in the native path, we now create a VPConstant when the corresponding underlying value is a constant.
This change allows us to share the same set of VPConstants 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.