Release 3.9.0

Headline features:
* pmb.aportgen.device: Don't require chassis
* pmb.export.symlinks: add "*.dtb" glob symlinks
* pmb.install: add XFS filesystem support
* pmb.kconfig: Allow matching on multiple categories for entries
* pmb.kconfig: Generate generic kconfig fragment from kconfig-generic.toml
* pmb.parse.deviceinfo: Don't require chassis
* pmb: Add --changed argument to checksum subcommand

Features:
* maintainers.txt: add Aelin
* maintainers.txt: move from Projects wiki table
* pmb.commands.kconfig: Use Path instead of string for self.file
* pmb.helpers.git: Add utilities for getting changed packages and files

Fixes:
* Added changes rule to deploy-docs
* flasher/frontend.py: fix "The recovery zip has not been generated yet"
* pmb, test: Format docstrings consistently with D2 Ruff rules
* pmb.aportgen.core: Add empty maintainer variable
* pmb.aportgen.core: Remove empty lines in header
* pmb.commands.kconfig: Conditionally construct path from args.file
* pmb.helpers.args: make `--no-ccache` actually work
* pmb.helpers.other: Check for 0-character hostnames in validate_hostname()
* pmb.install.format: fix xfs mkfs command
* pmb.parse.deviceinfo: Fix deviceinfo_drm being a str rather than a bool
* pmb.types: Fix type hint for PmbArgs.file
* pmb/install/format: f2fs: Add recommended robustness options
* pmb: Fix whitespace in docstrings
* pyproject.toml: Don't ignore FURB101
* pyproject.toml: Don't ignore FURB103
* pyproject.toml: Use ignore instead of extend-ignore

Other:
* pmb.build.kconfig: Modernise using pathlib
* pmb.config.init: Clean up a string
* pmb.config.init: Modernise ask_for_mirror() using pathlib
* pmb.config.init: Modernise ask_for_work_path() with pathlib
* pmb.export.symlinks: rename target directory to "target"
* pmb.helpers.other: Clean up some strings
* pmb.helpers.other: Modernise migrate_success() using pathlib
* pmb.helpers.other: Modernise migrate_work_folder() using pathlib
* pmb.helpers: Remove __init__.py
* pmb.install._install: Modernise sanity_check_disk(), sanity_check_disk_size() using pathlib
* pmb.install._install: Modernise setup_locale() using pathlib
* pmb.install._install: Modernise setup_login_chpasswd_user_from_arg() using pathlib
* pmb.install.format: consolidate mkfs formatting into a function
* pmb.install.format: Modernise format_luks_root() using pathlib
* pmb.parse.bootimg: Modernise bootimg() using pathlib
* pmb.parse.kconfig: Modernise check_config(), extract_arch() using pathlib
* pmb.parse.test_apkbuild: Modernise using pathlib
* pmb: Enable B checks
* pmb: Enable I checks
* pyproject.toml: Ignore RUF067 for now
* test.helpers.test_other: New test
* test.parse.test_bootimg: Modernise using pathlib