A Large Scale Analysis of Semantic Versioning in NPM