Defer module dependency evaluation until task invocation time

This should ensure that module dependencies declared out of order should
still resolve correctly.

Previously, swiftmodules declared out of order would raise a runtime
error.