Add option to RocCurveDisplay to display the average of different length ROC curves

### Describe the workflow you want to enable

When using k-fold cross-validation the resulting ROC curves can vary in length if there are a different number of positive and/or negative samples in each fold. I would like to add an option to sklearn.metrics.RocCurveDisplay to display the average of different length ROC curves.

Section 8 of [An introduction to ROC analysis](https://ccrma.stanford.edu/workshops/mir2009/references/ROCintro.pdf) by Fawcett describes the method.

### Describe your proposed solution

```python
def average_roc_curves(roc_curves_list,):
    """
    This function takes the average of different length ROC curves returned from 
    sklearn.metrics.roc_curve. The function expects a list of fpr, tpr, and 
    thresholds. The function subsamples from these lists and returns an 
    average_fpr, average_tpr, and average_thresholds.

    Parameters
    ----------
    roc_curves_list : list
        A list of fpr, tpr, and thresholds
    Returns
    -------
    average_fpr : list
        A list of averaged false positive rates
    average_tpr : list
        A list of averaged true positive rates
    average_thresholds : list
        A list of averaged thresholds
    """
    kfolds = len(roc_curves_list)
    min_length = np.min(list(len(roc_curves_list[k][2]) for k in range(kfolds)))
    shortened_roc_curves_list = list()
    for k in range(kfolds):
        fpr, tpr, thresholds = roc_curves_list[k]
        indicies = list(i for i in range(len(thresholds)))
        selected_indicies = np.sort(np.random.choice(indicies, min_length, replace=False))
        shortened_roc_curves_list.append([fpr[selected_indicies], tpr[selected_indicies], thresholds[selected_indicies]])
    average_fpr, average_tpr, average_thresholds = np.mean(shortened_roc_curves_list, axis=0)
    return average_fpr, average_tpr, average_thresholds
```

### Describe alternatives you've considered, if relevant

_No response_

### Additional context

_No response_

COMMENT:
[The paper in Section 8](https://ccrma.stanford.edu/workshops/mir2009/references/ROCintro.pdf) describes two modes methods averaging: vertical averaging and threshold averaging. In both cases, the visualization in Figure 9 shows the uncertainty: (c) is vertical and (d) is threshold

![Screen Shot 2022-07-23 at 7 07 12 AM](https://user-images.githubusercontent.com/5402633/180602502-2e2176a3-ec8f-4d7b-bc19-8f20ac259188.jpg)

Before we considering adding this into the `ROCCurveDisplay`, we need to design an API for a function that returns the average and the uncertainty. For me, the uncertainty is important to show given that these curves were computed through cross validation. Currently, the only function that returns some uncertainty information [permutation_importance](https://scikit-learn.org/stable/modules/generated/sklearn.inspection.permutation_importance.html#sklearn.inspection.permutation_importance). Most of the work for this feature is coming up with the API. Here are the options I see:

1. `roc_curve` accepts a `cv` splitter and a `average` parameter to switch between the two modes of averaging (if we want both averaging modes). Like `permutation_importance` it will return all the curves, the means, and the uncertainty. The downside of this approach is that it inflates the API of `roc_curve`.
2. A new `roc_curve_cv` that has the same API as above, but is only used for average. The downside is that this adds another function.
3. As proposed by you, a function that takes in a list of roc curves and averages them. Downside is that this is more work for the user compared to the above two options.

Labels: New Feature, module:metrics, Needs Decision - Include Feature