TYP: ExtensionDtype.name/type as ClassVar
xref #51736

ExtensionDtype.name/type is sometimes a property and sometimes a class variable. Going either way would require non-typing changes. I believe the ClassVar approach is used more frequently and also mandated by some of the register methods.

If ClassVar is the main way of defining type/name, let's annotate as much as possible with that and ignore the few cases that use properties:
```
pandas/core/dtypes/dtypes.py:854: error: Cannot override writeable attribute with read-only property  [override]
pandas/core/dtypes/dtypes.py:1048: error: Cannot override writeable attribute with read-only property  [override]
pandas/core/dtypes/dtypes.py:1422: error: Cannot override writeable attribute with read-only property  [override]
pandas/core/dtypes/dtypes.py:1429: error: Cannot override writeable attribute with read-only property  [override]
pandas/core/dtypes/dtypes.py:1766: error: Cannot override writeable attribute with read-only property  [override]
```

I will fix this PR after a decision has been made.
Since the base EDtype defined it as property previously, going to ClassVar would be an API change that would make it writable (which I think we should make raise) cc @jbrockmendel  > Since the base EDtype defined it as property previously, going to ClassVar would be an API change that would make it writable (which I think we should make raise) cc @jbrockmendel

I would agree with that (and the previous PR was aimed to making it a property; it also makes it more explicit that subclasses have to implement it) but in practice, it seems that it has to be a ClassVar (at least for `.name`)
https://github.com/pandas-dev/pandas/blob/2451b420d7bd783763971230726616e94ff24904/pandas/core/dtypes/base.py#L287
above is called when trying to register a user-defined ExtensionDtype

Might be good to discuss ClassVar/property separately for name and type (both are themselves not consistent).


edit: When changing these two lines to a property in the pandas-stubs tests, and then run the tests, it fails
https://github.com/pandas-dev/pandas-stubs/blob/main/tests/extension/decimal/array.py#L41 seems like we have a check for .name but not for .type?  .type being a property matters for ArrowDtype.

In general I follow @simonjayhawkins approach of not wanting to futz with code just to making typing checks happy I'm happy to focus only on `name` and try to create a minimally invasive PR :) Personally, I think it would be better to also change `name` in ExtensionDtype to a `ClassVar` (as it also confuses users - clearly, they cannot use a property (asserts) but they are expected to use one from an inheritance perspective) but then we cannot have a doc-string anymore. I updated the PR (removed all `.type` changes and all runtime code changes). I think the current state is better than on main but far from ideal: it should be consistent but that requires code changes and maybe even API changes if the property approach is preferred. Thanks @twoertwein 