TYP: Add cast to ABC classes.
- [ ] closes #xxxx
- [ ] tests added / passed
- [ ] passes `black pandas`
- [ ] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

Implements the idea of @simonjayhawkins from https://github.com/pandas-dev/pandas/issues/27353#issuecomment-526391462 to use cast on ABC classes. Currently only implements ABCDataFrame, ABCNDFrame, and ABCSeries. Previously, mypy would resolve e.g. ABCSeries as any, now it gets resolved as Series.

One issue remains: I don't understand why the code below generates this complaint.

> pandas/core/common.py:472: error: Incompatible return value type (got "Union[Any, List[Any], Series]", expected "Union[List[Any], ExtensionArray]")  [return-value]

```
def convert_to_list_like(
    values: Union[Scalar, Iterable, AnyArrayLike]
) -> Union[List, AnyArrayLike]:
    if isinstance(values, (list, np.ndarray, ABCIndex, ABCSeries, ABCExtensionArray)):
        return values
    ...
```

One can add Series to the return Union to resolve this, but it doesn't seem like that should be necessary.

I'm also getting:

> pandas/core/base.py:923: note: Internal mypy error checking function redefinition

on the lines

```
def map_f(values, f):
    return lib.map_infer_mask(values, f, isna(values).view(np.uint8))
```

where `map_f` is defined in various ways in if-else blocks. I'm not sure if this is a mypy bug.