This attempt to add a UsePredicatedEpilogue option for allowing unpredicated vector bodies with a predicated remainder. This involves creating vplans both with and without predication, and allowing unpredicated plans in the loop body with predicated plans in the remainder.
The preferPredicateOverEpilogue TTI hook has been changed to getPreferredVectorPredication, so that targets can opt into different PreferPredicateTy for the given loop. Some of the comments have been reworded to hopefully improve them and match how they are used.