Description
Reworking runner creation and producer queuing should allow parallelizing more types of checks that should support it by default. For example, it's now possible to run a majority of profiles checks in parallel but the restriction isn't separated until run inside the related checkrunner instances which is too late to be parallelized properly under the current design.
Instead, work queuing should probably be able to handle parallelizing more scope types as it currently only splits up version and package scope. One way to do this, would be to create the sharding sources (e.g. VersionedSource, UnversionedSource, etc) during checkrunner creation (instead of during queuing) if a pipe can be parallelized and then use them to queue the sharded tasks. Pipes that can't be parallelized would use a stub shard source to allow for conditionalizing queuing support.