POC: use typing.final
When working on index/indexing code I frequently find myself checking whether a method is overriden in subclasses.  `@typing.final` marks a method as not-overriden in a way that mypy can check (py38+).  This imports typing.final in py38+ and makes a dummy otherwise.

We'd need to make sure the CI runs mypy in py38.
cc @simonjayhawkins for opinion on mypy usage, @datapythonista on CI config > I think regardless of this PR we should use the latest version of python in environment.yml. I think it was pinned to 3.7 when it was the latest, and there is no reason to use an old version.

so change python=3.7 to python=3.8 in environment.yml? > so change python=3.7 to python=3.8 in environment.yml?

Or probably even better `3.*`, so we simply use the latest available python.  So its now complaining:

`pandas/_typing.py:28: error: All conditional function variants must have identical signatures`, but looking at the the 3.8 version of final it doesnt have any annotation Closing to clear the queue