(PUP-2752) Fix for invalid semvers

Prior to this commit the module tool would fail to perform any actions if any module found in the modulepath had an invalid semver.

This commit warns about invalid semvers in installed modules, sets the version to 0.0.0, and moves on. This allows the module tool to continue to work, even with the invalid semver found in the path. This commit also adds some rudimentary tests for the Puppet::ModuleTool::InstalledModules class.
"Semantic Version" should be capitalized as a proper noun.

Additionally, it may not be the module author seeing this error; telling a module's consumer that they need to update the module's metadata.json is a bit awkward.