ENH: merge_asof() has left_index/right_index and left_by/right_by (#14253)
- [x] closes #14253 
- [x] tests added / passed
- [x] passes `git diff upstream/master | flake8 --diff`
- [x] whatsnew entry

I'll be the first to admit that there is some kludge in here, identified by comments in the source code. There are some code paths that can only be hit during a `pd.merge_asof()` when `left_index` or `right_index` is set, so no existing functionality will be affected.

I think for pandas 2.0 we'll need to take a [more holistic view of how to do merges](https://github.com/pandas-dev/pandas2/issues/31).
 ## [Current coverage](https://codecov.io/gh/pandas-dev/pandas/pull/14426?src=pr) is 85.26% (diff: 87.23%)

> Merging [#14426](https://codecov.io/gh/pandas-dev/pandas/pull/14426?src=pr) into [master](https://codecov.io/gh/pandas-dev/pandas/branch/master?src=pr) will decrease coverage by **<.01%**

``` diff
@@             master     #14426   diff @@
==========================================
  Files           140        140          
  Lines         50634      50660    +26   
  Methods           0          0          
  Messages          0          0          
  Branches          0          0          
==========================================
+ Hits          43173      43193    +20   
- Misses         7461       7467     +6   
  Partials          0          0          
```

> Powered by [Codecov](https://codecov.io?src=pr). Last update [7d40f18...f6f87b6](https://codecov.io/gh/pandas-dev/pandas/compare/7d40f18718ba80e8b8d706eaed2fc4c098686e71...f6f87b65f8b1dc80defa88aa6f02e3b71b6c32bb?src=pr)
 I've had to resubmit this PR as #14531 because I had to recreate my pandas fork. Long story.
