Optimize `ModuleVersionResolveException` During resolution, we may throw a lot of `ModuleVersionResolveException` or `ModuleVersionNotFoundException`. Often, one per repository, when a version is not found in that repository. But in the end, the version may be found, or a different version may be selected, in which case we don't care about the failure, which is only used if _no version_ could be selected.
As a consequence, we had a lot of overhead in both generating a stack trace **and** an error message, that would never be used.
This commit reworks those special exceptions used during resolution so that we avoid filling the stack trace (we don't care) and we create the message lazily (only if it will actually be used).