TYP: Fix typing issues, mainly Something => IndexLabel
Several typing annotations in Pandas are not correct. This patch tries to fix some of them.

The internal names in Pandas are not straight forward. An `IndexLabel` is used for one or multiple columns.

 * `value_counts` also works for a single column
 * `stack`/`unstack` can work with multiple levels at the same time

I have the feeling that there might be more such problems in the code. There are also some incorrect annotations in pandas-stubs mainly related to one/multiple index levels (refer to https://github.com/pandas-dev/pandas-stubs/issues/703 - even though I haven't had time for a PR over there)
I have a general request: I would like to have better names in general.

`Axis` (singular) is `int` or a `Literal['columns', ...]`. So far so good.
`Axes` (plural) is a `ListLike` and is NOT used for multiple axis but instead for `columns: Axes` - a list of columns (or rows)
`IndexLabel` seems to be used for one or multiple columns (or rows) - it is a `Sequence[Hashable]|Hashable`. So that means it does not support a `pd.Index`? 

There is also `Level = Hashable`. When functions take one or multiple levels, that makes it `Level | Sequence[Level]` - or `IndexLabel` again. Is that a good name or should there be a `LevelOrLevels` alias? (I hate "Or" in names but cannot come up with something better that is as clear)

It is not always clear to me which type to use where and when.

 Just a general comment here...

The types used in the pandas code are meant to help with keeping the pandas code consistent. 

The types in pandas-stubs are meant for public consumption.

There are some inconsistencies in naming between the two projects.  See https://github.com/pandas-dev/pandas-stubs/issues/128 and https://github.com/pandas-dev/pandas-stubs/issues/161 for some discussion.

I'm not going to look at the details of this PR, but if your goal is to have better naming for use in type checking user code that calls pandas, it might be a better contribution to do something in the pandas-stubs project instead of in pandas, or you could do both.  
 > I'm not going to look at the details of this PR, but if your goal is to have better naming for use in type checking user code that calls pandas

No, my goal is to fix wrong type hints in Pandas, specifically:
 * `value_counts` also works for a single column but the current type hints don't cover that
 * `stack`/`unstack` can work with multiple levels at the same time but the current type hints don't cover that

The naming is just an additional issue which makes it more difficult than it should be. I shouldn't have raised that topic here. > No, my goal is to fix wrong type hints in Pandas, specifically:

Wrong type hints for pandas users?  Or for pandas developers?

If it is the former, then you should also look at `pandas-stubs` .  If it is the latter, then that's fine. 

If you are using the pandas source to type check your user code, then it will be incomplete as compared to using `pandas-stubs` .
 Thanks @behrenhoff!