Revert "REF: remove special casing from Index.equals (always dispatchto subclass) (#35330)"
State: closed

This reverts commit 0b90685f4df2024754748b992d5eaaa352e7caa5.

- [ ] closes #35804
- [ ] closes #35805
- [ ] tests added / passed
- [ ] passes `black pandas`
- [ ] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

```
       before           after         ratio
     [54682234]       [05c97adb]
     <master>         <revert-35330>
-         293±5ms       3.75±0.2μs     0.00  index_object.IndexEquals.time_non_object_equals_multiindex

SOME BENCHMARKS HAVE CHANGED SIGNIFICANTLY.
PERFORMANCE INCREASED.
```

```
       before           after         ratio
     [54682234]       [05c97adb]
     <master>         <revert-35330>
-      1.44±0.1ms         800±20μs     0.56  reindex.LevelAlign.time_reindex_level

SOME BENCHMARKS HAVE CHANGED SIGNIFICANTLY.
PERFORMANCE INCREASED.
```

Labels:
name: Performance
description: Memory or execution speed performance
name: Regression
description: Functionality that used to work in a prior pandas version

Comments:
more benchmark results
```
       before           after         ratio
     [54682234]       [05c97adb]
     <master>         <revert-35330>
-     2.97±0.09μs      2.67±0.02μs     0.90  index_object.Indexing.time_slice_step('Float')
-        554±30ns         497±10ns     0.90  index_object.Range.time_get_loc_inc
-      8.56±0.1μs       7.65±0.2μs     0.89  index_object.Indexing.time_get_loc_sorted('Float')
-      2.94±0.2μs      2.63±0.02μs     0.89  index_object.Indexing.time_slice('Float')
-        330±10μs          294±3μs     0.89  index_object.IntervalIndexMethod.time_intersection(1000)
-     5.40±0.09μs      4.79±0.07μs     0.89  index_object.Indexing.time_get_loc_sorted('Int')
-     1.02±0.03ms          898±3μs     0.88  index_object.IntervalIndexMethod.time_intersection_both_duplicate(1000)
-      5.42±0.3ms      4.75±0.01ms     0.87  index_object.SetOperations.time_operation('int', 'symmetric_difference')
-      14.4±0.5ms       12.4±0.1ms     0.86  index_object.Range.time_iter_inc
-      10.1±0.8ms      8.71±0.06ms     0.86  index_object.IntervalIndexMethod.time_intersection(100000)
-      10.3±0.9μs       8.83±0.2μs     0.86  index_object.Indexing.time_get_loc_non_unique_sorted('Int')
-      3.24±0.2μs      2.77±0.02μs     0.85  index_object.Indexing.time_slice('Int')
-         108±6ms       90.6±0.5ms     0.84  index_object.IntervalIndexMethod.time_intersection_both_duplicate(100000)
-        329±10μs          274±3μs     0.83  index_object.IntervalIndexMethod.time_intersection_one_duplicate(1000)
-        25.9±2μs       21.2±0.2μs     0.82  index_object.Indexing.time_get_loc_non_unique_sorted('Float')
-      7.42±0.5ms      5.69±0.07ms     0.77  index_object.SetDisjoint.time_datetime_difference_disjoint
-        16.3±1ms      12.5±0.05ms     0.77  index_object.SetOperations.time_operation('date_string', 'union')
-        4.98±1ms       3.65±0.2ms     0.73  index_object.Indexing.time_get_loc_non_unique('Float')
-        303±20ms       3.86±0.9μs     0.00  index_object.IndexEquals.time_non_object_equals_multiindex

SOME BENCHMARKS HAVE CHANGED SIGNIFICANTLY.
PERFORMANCE INCREASED.
```
LGTM
@jreback OK to merge this as a straight revert for backport and then follow-up for master
@meeseeksdev backport 1.2.x