Resolve module dependencies unless no_deps is specified
By default, for a source_type of module, include the modules that a
module requires as well as the module itself. This can be disabled
with the no_deps flag. With or without no_deps the passed-in module
list is validated not to contain duplicate modules with the same
name but different streams or versions.
For tests, add a @mock_pdc decorator that executes a function with
PDC requests redirected to a local implementation that queries against
a fixed array of (simplified) results.