while node packages need to me semver-versioned, the version range definition as used to specify dependencies is not. `^10.0` is a perfectly valid way to say "at least 10.0 and less than 11".
In semver3 you can use `parse('10.0', optional_minor_and_patch=True)` but we don't have semver3 yet (it's not even released yet), so we need to make this up ourself.
support non-semver range definitions
while node packages need to me semver-versioned, the version range
definition as used to specify dependencies is not. `^10.0` is a
perfectly valid way to say "at least 10.0 and less than 11".
In semver3 you can use `parse('10.0', optional_minor_and_patch=True)`
but we don't have semver3 yet (it's not even released yet), so we need
to make this up ourself.