TST/CI: Unify CI test scripts (single and multi) and simplify the system
- [X] refs #23658
- [ ] tests added / passed
- [ ] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

The goal of this PR is:
- Avoid repetitive code by merging `ci/script_single.sh` and `ci/script_multi.sh`
- Simplify calls to different tests (mainly slow vs not slow), by avoiding the previously two different syntax (`SLOW=true` and `--only-slow`) and using the pytest native syntax instead
- Integrate `upload_coverage.sh` into the new unified script to avoid the extra complexity of having many scripts
