compare two semver version strings, returning -1, 0, or 1