ENH partial_dependece plot for HistGradientBoosting estimator fitted with `sample_weight`

### Describe the workflow you want to enable

As partial dependence of a model at a point [is defined as an expectation](https://scikit-learn.org/stable/modules/partial_dependence.html#mathematical-definition), it should respect `sample_weight` if someone wishes to use it (for instance, when you know your `X` does not follow the distribution you are interested in).

#25209 tries to solve this for `method='brute'` when you have new `X`. For older tree-based models trained with sample_weights, [`method='recursion'`](https://nicolas-hug.com/blog/pdps) keeps track of the training `sample_weight` and calculates the `partial_dependece` with that into consideration.

But, as discussed during the implementation of `sample_weight` on the HistGradientBoosting estimators (https://github.com/scikit-learn/scikit-learn/pull/14696#issuecomment-548295813), these models stores an attribute `_fitted_with_sw` and when `partial_dependece` with recursion is asked, it throws an error:

https://github.com/scikit-learn/scikit-learn/blob/205f3b76ef8500c90c346c6c6fb6f4e589368278/sklearn/ensemble/_hist_gradient_boosting/gradient_boosting.py#L1142-L1148


### Describe your proposed solution

As discussed in https://github.com/scikit-learn/scikit-learn/issues/24872#issuecomment-1352354690, the big difference between other tree-based algorithms and HistGradientBoosting is that HistGradientBoosting does not save the `weighted_n_node_samples` when building the tree.

### Describe alternatives you've considered, if relevant

_No response_

### Additional context

_No response_

COMMENT:
From my shallow understanding of BaseHistGradientBoosting implementation, this looks about right! Awesome job unraveling the details! :D

For benchmarking, scikit-learn uses [airspeed velocity](http://github.com/airspeed-velocity/asv/) to monitor performance, and I think this PR should run the [benchmarks for the HistGradientBoosting from there](https://scikit-learn.org/scikit-learn-benchmarks/). You can follow [this tutorial on how to use it to compare your branch versus main branch](https://scikit-learn.org/1.2/developers/contributing.html#monitoring-performance).

But I also think that some [`timeit.timeit`](https://docs.python.org/3/library/timeit.html) runs should be useful here. Something like:
```python
from timeit import timeit
from sklearn.ensemble import HistGradientBoostingClassifier
from sklearn.datasets import make_classification

def fit_predict_hist(n_samples):
    X, y = make_classification(n_samples=n_samples)
    hgbc = HistGradientBoostingClassifier(random_state=42).fit(X, y)
    probs = hgbc.predict_proba(X)

n_samples_list = [100, 1000, 5000]
times = [timeit(lambda: fit_predict_hist(n_samples), number=10) for n_samples in n_samples_list]
print(times)
>>> [2.026070300000015, 12.3248289, 15.59315509999999]
```

This is just a draft, and you can certainly:
- change the `make_classification` to other [`sklearn.dataset`](https://scikit-learn.org/stable/modules/classes.html#module-sklearn.datasets) sets (or add them to the function, so it runs many different types - including datasets with categorical type data);
- add something for regression;
- change the parameters such as `number` from `timeit.timeit` and `n_samples_list`.

You can save it and then plot the main vs your branch to compare the change:
```python
from sklearn import __version__
import joblib
joblib.dump(times, f"time_list_{__version__}")
```

___

Update: actually, using [`timeit.repeat`](https://docs.python.org/3/library/timeit.html#timeit.Timer.repeat) might be better for having a sense of variance:
```python
from timeit import repeat
...
times = [repeat(lambda: fit_predict_hist(n_samples), repeat=5, number=10) for n_samples in n_samples_list]
np.array(times).mean(axis=1)
>>> array([ 1.92954972, 11.46854726, 13.89775882])
np.array(times).std(axis=1)
>>> array([0.01262523, 0.30100737, 0.16548444])
```

Labels: New Feature, module:ensemble