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

The test I added fails in CI, because of another issue, which I proposed a downstream fix for in https://github.com/pydata/xarray/pull/3874#issuecomment-602046357. Looks like `CFTImeIndex.__new__` needs to instantiate `_cache`; for now i guess the test will have to monkeypatch It occurred to me we could write a more direct test that circumvents the `_cache` issue for now; that way we won't need to temporarily monkeypatch. Looks like test failures are happening because we are calling _filter_indexer_tolerance inconsistently (in master, unrelated to this PR).

To fix this, I think we need to go back to your way of doing it: pass target._values to `_filter_indexer_tolerance`, and we'll have to update the annotation Cool, that seemed to do it; looks like things are all green now.  Let me know if you have any further comments. I think this may be ready now.  Does this require a what's new entry?  If so, I notice this was tagged for a 1.0.4 release.  Should I create a new what's new file for that? Great, thanks @jreback.  I added a what's new entry.  Let me know if you'd like me to tweak it at all.  I appreciate your and @jbrockmendel's help with this. lgtm ping on green. Many thanks @jreback; looks like things are green. thanks @spencerkclark very nice! keep em coming!