CLN: Add abstract base classes for certain objects

Instead of the `is_series`, `is_generic`, etc methods, can use the ABC*
methods to check for certain pandas types. This is useful because it
helps decrease issues with circular imports (since they can be easily
imported from core/common).

The checks take advantage of the `_typ` and `_subtyp` attributes to
handle checks. (e.g. `DataFrame` now has `_typ` of `"dataframe"`, etc.
See the code for specifics.