 TYP: use overload to refine return type of set_axis
Trying to use overload so that mypy knows that the return type of `.set_axis` is depending on the value of `inplace`.

This seems to work - if I have
```python
# t.py

import pandas as pd

reveal_type(pd.DataFrame([1,2,3]).set_axis([2,3,4], axis=0, inplace=True))
reveal_type(pd.DataFrame([1,2,3]).set_axis([2,3,4], axis=0, inplace=False))
reveal_type(pd.DataFrame([1,2,3]).set_axis([2,3,4], inplace=True))
reveal_type(pd.DataFrame([1,2,3]).set_axis([2,3,4], inplace=False))
reveal_type(pd.DataFrame([1,2,3]).set_axis([2,3,4], axis=0))
reveal_type(pd.DataFrame([1,2,3]).set_axis([2,3,4]))
```
then I get
```console
$ mypy t.py 
t.py:3: note: Revealed type is 'None'
t.py:4: note: Revealed type is 'pandas.core.frame.DataFrame'
t.py:5: note: Revealed type is 'None'
t.py:6: note: Revealed type is 'pandas.core.frame.DataFrame'
t.py:7: note: Revealed type is 'pandas.core.frame.DataFrame'
t.py:8: note: Revealed type is 'pandas.core.frame.DataFrame'
```
which seems correct.

However, running `mypy pandas` throws some errors, which I've ignored (similarly to how this was done in #37137, though this time there's an extra error) and put the errors as comments. @simonjayhawkins @Dr-Irv sorry to ask for your help here, but do you know how to address this?

Reading through  https://github.com/python/mypy/issues/6580 , my understanding is that we would need to provide exponentially many overloads for this to work without errors. However, by placing the `: Literal[False] = ...` overload first, then ties will be broken with that one and so the correct return type will be inferred (see the above `t.py` experiment)