Support multiple version strategies for Librarian::Manifest

- Added  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
- Relaxed 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