Support multiple version strategies for Librarian::Manifest

## Summary
As mentioned in PR #150 by @yfeldblum. Lack of Semver 2.0.0 support exposes the need to support multiple version strategies.  

This PR attempts to add multi-version support to Manifests (defaulting to GemVersion) and offers SemanticVersion as a built-in strategy that [downstream projects][2] can use on by overriding `Librarian::Environment` 

```ruby
def adapter_manifest_version
  Librarian::ManifestVersion::SemanticVersion
end
```

## Changes
- Add ManifestVersion Module to contain version strategies
- Allow overriding version strategy via Environment#adapter_manifest_version
  - Defaults to GemVersion strategy for backwards compatibility
- Convert Manifest::Version to ManifestVersion::GemVersion strategy
- Add ManifestVersion::SemanticVersion Strategy supporting [Semver 2.0.0][1]
  - Relax Semver constraints to support 2-number versions (ie: 1.0)
- Added Specs to test conditions mentioned in semver spec
- Use GemVersion strategy in mock registry

[1]: http://semver.org/spec/v2.0.0.html
[2]: https://github.com/rodjek/librarian-puppet/