Better "semantic versioning" for NPM