Update dependencies and pre-commit hooks
Updates all the dependencies and pre-commit hooks, though there are no actual updates of the main (non-dev/docs) dependencies. Additionally, all the direct dependencies now have generous version ranges.
The only thing that's missing is updating Pylint, which I think should be done separately because it reports a few new errors (mostly related to the overridden methods again and missing encoding when opening files).