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
github references only exist in package.json, `npm-shrinkwrap sync` only cares about node_modules & npm-shrinkwrap.json both of which have full git links instead.