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
what does "extra" mean in this context? Duplicates of things higher up the chain?