Make Librarian::Manifest Semver 2.0.0 compatible

## Problem Summary
[Semver 2.0.0][1] *prerelease* section cannot be parsed by Gem::Version and causes
an exception at run-time when parsing the manifest of modules that include it.

This is causing issues in a downstream project [rodjek/librarian-puppet][2]. I've attempted to apply [a patch][3] there, but it is really related this gem.  I figured it would be best to add this feature to upstream as well. I spent some extra time re-factoring it to be more readable.

## Changes

- Added [Semver 2.0.0][1] support to Librarian::Manifest::Version
- Relaxed Semver constraints to support 2-number versions (ie: 1.0)
- Added specs to test conditions mentioned in semver spec

[1]: http://semver.org/spec/v2.0.0.html
[2]: https://github.com/rodjek/librarian-puppet/
[3]: https://github.com/rodjek/librarian-puppet/pull/114