Support Python 3.12 and drop Python 3.8

During the first experiments, I identified the following necessary work steps:

  • Import e.g. Hashable from abc.collections instead of typing, especially those mentioned in the deprecation timeline of major features.
  • Stop Python from appending hints to "attribute not ready" errors as in AttributeError: The actual HydPy instance does not handle any elements at the moment.. Did you mean: '_elements'?. The solution is to always raise AttributeNotReady (which is a subtype of RuntimeError, not of AttributeError) when an existing property is currently not accessible.
  • Fix (the doctest of) make_abc_testable.

Not strictly necessary, but nice to have when dropping Python 3.8:

  • Switch to all "generic types" introduced by PEP 585.