implemented npm-shrinkwrap sync

This is the syncing algorithm for `npm-shrinkwrap sync`

it reads your npm-shrinkwrap.json and ensures
  node_modules is the EXACT same. This means every
  version & sha recursively and also removing any
  excess folders from node_modules.

This implementation ignores `package.json` locally.

cc @sh1mmer @jcorbin @Matt-Esch
I don't think this should be called `uri`. I found that confusing because it's not URI formatted. `filePath` or something seems more apt.