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:
> Or could roc_curve be designed to accept a list of y_trues and y_scores instead of a cv splitter 

I have three issues with this API:

1. If `roc_curve` accepts a list for `y_scores`, it would overlap with how we output a list of ndarrays for multilabel problems:

```python
from sklearn.datasets import make_multilabel_classification
from sklearn.tree import DecisionTreeClassifier

X, y = make_multilabel_classification(random_state=0)
tree = DecisionTreeClassifier()

tree.fit(X, y)

print(type(tree.predict_proba(X)))
# <class 'list'>
```

Although the format is a little different from the one used for averaging ROC curves, I think it will end up to be confusing.

2. A user would need to know how to use the splitter API to compute scores and pass it in as a list of `y_true` and `y_scores`. (We likely can work around this by extending `cross_validate` to output predictions, but that is a different topic: https://github.com/scikit-learn/scikit-learn/issues/17075)

3. What I meant by inflating the API is that the return type depends on the input's type. Currently, `roc_curve` always returns a tuple of three arrays. I think it is poor API design  for `roc_curve` to accept a list of ndarrays as input and the output changes to an average roc curve + uncertainty.

For me, I prefer a new function all together. (Option 2 in https://github.com/scikit-learn/scikit-learn/issues/23983#issuecomment-1193109238) The scope of the new function would be limited to doing cross validation for computing an average roc curve.

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