Release 3.7.0

Features:
* envkernel: Add --llvm flag to use LLVM
* kconfig: Reintroduce command line argument to check for categories
* pmb.install: Support PowerPC PReP boot partitions
* pmb.qemu: Support booting with OpenFirmware
* pmb.helpers.run_core: Better handle invalid timeout values
* pmb.build.kconfig: Use LLVM for kconfig where applicable
* setup_keymap: support systemd
* kconfig: print option value pref. in warning about missing config
* pmb.shutdown: Add timeout to kill request sockets
* pmb: Make command timeout opt-in
* pmb.build.kconfig: add a "generate" cmd to build kconfig from fragments
* pmb.build.kconfig: edit: add kernel fragment support
* pmb.aportgen: Add empty maintainer fields to generated APKBUILDS
* pmb.aportgen.device: Add postmarketos-base-downstream by default if relevant
* pmb.config.init: Automatically switch to Edge if creating a new port
* envkernel: Add support for RISC-V
* pmb.build: Support architecture-specific fragments
* pmb.qemu: Add UEFI support on RISC-V
* envkernel: Make LLVM the default
* pmb: Parse supported binary architectures from pmaports.cfg
* pmb: Default PMB_APK_FORCE_MISSING_REPOSITORIES=1 on unsupported binary architectures
* pmb.config.init: Rewrite message for new port creation
* pmb.aportgen.linux: Add mainline kernel aport generation
* pmb.config: add provider select prompting for pmos-usb-moded
* pmb.parse._apkbuild: Add support for parsing maintainer fields
* envkernel: Install required packages for Rust
* pmb.parse.kconfigcheck: check correctness of arches

Fixes:
* Honor version constraints in makedepends
* kconfig: strip quotes when checking string values
* kconfig: refactor tristate value checking
* pmb.config.init: Gracefully handle there not being any providrs for _pmb_select
* pmb: Remove execute bit from config file mode
* pmb.install: Fix `Unable to find the first partition of /dev/loop0`
* pmb.parse.bootimg: Fix crash with non-default Exynos QCDT values
* pmb.aportgen: Use NonBugError to inform that there is no generator
* pmb.config.init: Use NonBugError for nonexistent devices
* pmb.parse.deviceinfo: Use NonBugError for nonexistent devices
* envkernel: enable word splitting for zsh
* pmb: Fix kernel architecture logic
* pmb.build: arch=all is not a single architecture
* pmb.build.kconfig: Hardcode native chroot even more
* pmb.helpers.git: Make upstream remote finding more robust
* sideload: skip unnecessary apkindex updates
* pmb.build: Fix bootstrap of systemd repo
* pmb.parse: Don't prefer exact package match over other providers
* pmb.chroot.apk: Reduce repetition in apk package check
* pmb.build.envkernel: Use NonBugError for invalid package count
* pmb.helpers.repo: Skip nonexistent APK indexes
* pmb.core.context: Re-enable ccache by default
* pmb.aportgen: Use NonBugError for cancelling an overwrite
* pmb.build.init: Initialise chroot when initialising compiler
* pmb.config.workdir: Use NonBugError for channel mismatch message

Other:
* pmb.arch: Differentiate between qemu-user and qemu-system names
* pmb.parse.cpuinfo: Allow overriding cpuinfo path
* test.parse.test_cpuinfo: New test
* pmb: Remove unused imports
* kconfig: soften the INFO msg for preferred kconfig option values
* pmb: Clean up some instances of type:ignore
* kconfig: Rename components_list to categories
* kconfig: Take base kconfig categories from function argument for check
* pmb.install: Remove mentions of ondev-prepare-internal-storage.sh
* docs: use new docs.postmarketos.org theme
* docs: rework index page
* docs: tweak headlines
* gitlab-ci: deploy: trigger docs.postmarketos.org
* docs: remove sphinxext.opengraph
* docs: remove requirments.txt file
* gitlab-ci: fix trigger on changes in docs dir
* docs: remove the version number
* docs: remove initial comments, duplicated info from theme
* docs.conf: re-add extensions
* .gitignore: Add mypyc section
* pmb: Enable C4 checks
* docs: use postmarketOS contributors in copyright, remove author
* pmb.build: package: replace map() with generator expression
* pmb.build: package: rewrite list literal as set literal
* docs.conf: Reformat with Ruff
* pmb.parse.bootimg: Improve type hints
* test/pytest.ini: Remove
* README.md: Add note about /tmp with noexec causing problems
* pmb.aportgen: Get rid of AportGenEntry
* pmb.aportgen: Clean up a string
* pmb.aportgen: Use f-string for "no generator" error message
* pmb.build.envkernel: Clean up some strings
* test.build.test_envkernel: New test
* pyproject.toml: Override default norecursedirs for Pytest
* pmb.build.kconfig: allow bypassing .config check in get_outputdir
* pmb.build.kconfig: allow passing outputdir into _make
* pmb.build.kconfig: _make: accept a list of make commands
* pmb.config: add _defconfig as valid apkbuild var
* pmb.parse.kconfig: add function to generate a fragment from kccheck.toml
* test.parse.test_kconfig_generation: new test
* test.build.test_kconfig_fragments: new test
* pmb.aportgen.device: Clean up some strings
* pmb.qemu.run: Make sigterm_handler() private
* pmb.config.pmaports: Add DEVELOPMENT_CHANNEL constant
* pmb.parse.deviceinfo: Clean up nonexistent device string
* pmb.config.init: Replace manual induction variable handling
* test.helpers.test_git: Add test for remote_to_name_and_clean_url()
* tests: add missing type annotation
* ci: check all scripts with mypy
* pmb/config: update apk_tools_min_version
* pmb: Remove more instances of args
* pmb.helpers.apk: Use Sequence instead of list in inputs
* pmb.helpers.pmaports.find: simplify condition
* pmb.aportgen.linux: Do not require kernel package name to match existing device
* COMMITSTYLE.md: New file
* pmb.helpers.apk: Remove action_msg argument from check_outdated()
* test.parse.test_apkbuild_private: New test
* pmb.aportgen.core: Skip maintainer fields too, not just comments
* pmb.aportgen: Don't specify # Maintainer and # Contributor in rewrite() call
* test: add check kconfigcheck sanity_check