(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.
This test doesn't do quite as much as you'd like it to since `mod1` and `mod3` have the same module name.  They'll get written to disk to the same directory; you're really just testing `mod3` twice.