Switch build backend, switch to CI components, add pre-commit config, add linter rules
Build backend has been switched from setuptools to hatch for simplicity, to enable sane defaults and add dev tooling not possible via setuptools.
Update the CI to use CI components.
Add pre-commit configuration that mimics the checks done via the CI and various development commands (hatch fmt, hatch run check, etc).
Address various issues identified by new linter rules.
Change boolean arguments to kw-only arguments for clarity. This will be a slight API change.
Edited by Patrick Godwin