Fix to _get_nearest_indexer for pydata/xarray#3751
@jbrockmendel thanks for encouraging me to submit a PR.  I'm totally open to any suggested changes; this is just a sketch of something that would work for our needs and hopefully not break anything in pandas.

To those not familiar, some changes introduced in https://github.com/pandas-dev/pandas/pull/31511 broke some functionality of an Index subclass we define in xarray.  More details/discussion can be found in https://github.com/pydata/xarray/issues/3751 and https://github.com/pydata/xarray/pull/3764, but the gist of the issue is that for better or for worse, we have been relying on left and right distances in `_get_nearest_indexer` being determined using NumPy arrays rather than Index objects (as they were prior to https://github.com/pandas-dev/pandas/pull/31511).  

One way to fix this is to override `_get_nearest_indexer` within our Index subclass, which we've temporarily done in https://github.com/pydata/xarray/pull/3764, but this potentially fragile.  It would be great if we could find a solution here.

- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry
