Expand model-structure lint rules with a fast AST-based, ruff-like framework (#44174)
* rework branch
* added a new rule
* tweaked rule 6 and 9
* fix TRF009
* fix TRF006
* accept None for
* addressed @CyrilVallez reviews
* fmt
* improve rules registry
* some docs and remove hardcoded variable names
* tweak the CLI for humans