Lots of Type Annotation and Refactoring
This PR gets us about half-way to phpstan level 6. It performs a lot of type annotations and refactoring. Concretely:
- Lots more functions now have types.
- There is now a subset of files that can be linted on phpstan level 10 (the highest). This includes some of the main files.
- Instead of using
PbPath
arrays directly, this commit introduces utility methods to access them in a type-safe manner.