dev/ci: rewrite computeRunType to use structured RunTypeMatchers
Created by: bobheadxi
Rewrite computeRunType to use structured RunTypeMatchers provided by each RunType to allow us to understand how a RunType is determined after the fact. See this in action in https://github.com/sourcegraph/sourcegraph/pull/30532. Demonstrative example:
Also introduces testing that iterates over RunTypes and ensures each has relevant properties defined, as well as tests covering some of the new and old functionality.