Adds implementation for Semantic Versioning 1.0.0 to forge related code

The Forge Publisher should enforce the SemVer 1.0.0 spec as described
here http://semver.org/spec/v1.0.0.html. It should also enforce that
module dependencies uses the scheme outlined here:
http://docs.puppetlabs.com/puppet/2.7/reference/modules_publishing.html#dependencies-in-the-modulefile

This commit adds a Version and VersionRange class capable of
parsing the string representation. The classes also contains the logic
needed to compare versions and check if ranges include them.

The new behavior is currently only implemented in the Publisher and
the Forge v2 API logic, not in the rest of Geppetto.

Although this is related to issue #472, it's not a full implementation
of the npm tool spec. Only the subset described for Puppet modules is
implemented at this point.