Switch to uber/npm-shrinkwrap for npm-shrinkwrap.json generation

Instead of our homegrown grunt/shrinkwrap.js
Fixes #13483.
New npm-shrinkwrap.json is human-readable but still in a consistent/stable format.
Should aid debugging, produce better diffs, and be less prone to merge conflicts