PERF: isinstance(x, ABCFoo) vs isinstance(x, Foo)
Using the test cases in `tests.dtypes.test_generic`, checking `isinstance(item, ABCIndex)` takes ~2x as long as `isinstance(item, Index)`. Same for `MultiIndex`, `DataFrame`, `Series`.  These measurements are pretty stable if we restrict to cases where the `isinstance` is True.

```
import timeit
import numpy as np
import pandas as pd
from pandas.core.dtypes import generic as gt

tuples = [[1, 2, 2], ['red', 'blue', 'red']]
multi_index = pd.MultiIndex.from_arrays(tuples, names=('number', 'color'))
datetime_index = pd.to_datetime(['2000/1/1', '2010/1/1'])
timedelta_index = pd.to_timedelta(np.arange(5), unit='s')
period_index = pd.period_range('2000/1/1', '2010/1/1/', freq='M')
categorical = pd.Categorical([1, 2, 3], categories=[2, 3, 1])
categorical_df = pd.DataFrame({"values": [1, 2, 3]}, index=categorical)
df = pd.DataFrame({'names': ['a', 'b', 'c']}, index=multi_index)
sparse_series = pd.Series([1, 2, 3]).to_sparse()
sparse_array = pd.SparseArray(np.random.randn(10))

items = [tuples, multi_index, datetime_index, timedelta_index,
    period_index, categorical, categorical_df, df,
    sparse_series, sparse_array]

pairs = [
    (pd.Index, gt.ABCIndex),
    (pd.MultiIndex, gt.ABCMultiIndex),
    (pd.DataFrame, gt.ABCDataFrame),
    (pd.Series, gt.ABCSeries),
]

for pair in pairs:
    times = [0, 0]
    for item in items:
        times[0] += timeit.timeit('isinstance(item, pair[0])', setup='from __main__ import item, pair')
        times[1] += timeit.timeit('isinstance(item, pair[1])', setup='from __main__ import item, pair')
    print(pair[0].__name__, times)
```

Using 0.20.2 on a 2011-era MacbookPro, this gave:
```
('Index', [2.9498720169067383, 7.1935436725616455])
('MultiIndex', [2.844989061355591, 6.8693037033081055])
('DataFrame', [2.8556389808654785, 7.1646740436553955])
('Series', [2.988542079925537, 6.987249851226807])
```

Using 0.20.2 on a 2015-6 era Ubuntu desktop:
```
('Index', [1.9884922504425049, 4.220286846160889])
('MultiIndex', [1.6177773475646973, 3.439270496368408])
('DataFrame', [1.5225791931152344, 3.534085512161255])
('Series', [1.7198824882507324, 3.554945468902588])
```

I don't have any bright ideas for improving the ABC performance, but wanted to put these numbers out there.  These `isinstance` checks happen all over the place, so the mileage might be non-trivial.
