- API break: the `.diag()` method now accepts a callable function that
will only be invoked if needed; it must return the string to be output
- add the `.diag_()` method for strings that are not expensive to build
- list Python 3.11 as a supported version
- various Tox configuration and testing clean-ups:
- use Pylint 2.14; it no longer outputs the `no-self-use` lint
- drop the flake8 + hacking environment, it is incompatible with recent
versions of flake8
- use `pytest.mark.parametrize()` instead of the ddt module
- add both lower and upper version constraints to most of the package
dependencies in the Tox test environments
- move the mypy configuration to the pyproject.toml file
- use types-setuptools and drop a `type: ignore` annotation
- add a Nox definitions file