use Ruff for linting (#16751)
Fixes #14817
Summary of the issue:
Our linting system has the following issues:
we are stuck on an old version of flake8, as the flake8tabs module is no longer being updated
we can't perform automatic lint fixes
Ruff is becoming more maintained than flake8
Description of user facing changes
The entire repository is linted with Ruff, rather than diffs
Developers can now automatically fix certain linting issues with runlint.bat
If using pre-commit hooks, linting is automatically applied: pre-commit.com/#usage
CodeRabbit now scans code using our Ruff config
Description of development approach
integrate Ruff, migrate flake8 config
Update AppVeyor scripts to use ruff
add pre commit hook support for ruff
update linting docs