Improve project tooling (#2351)
* Set python version in .tools-version
This ensures that tools that support it will select the same Python
version as defined in the .python-version file.
* Move scripts/setup to script/setup
* Add scripts to rule them all
* Format Python source as part of `make fmt`
* Move ruff into dev dependencies
This removes the outdated pinned version from tox.ini and ensures that
all tooling is using the same version of ruff.
---------
Co-authored-by: Michael Dwan <m@dwan.io>