fix prune.js test with empty cache

- fix failing test, if I do not have mkdirp in my cache
- use a dedicated cache dir, so that the reference to the mock
  registry is not cached
Sort dependencies when --save'ing.

Uses sorted-object package to abstract away code shared by shrinkwrap and
install.
add test, some boyscouting
Add --save-exact config for --save[-dev|-optional].

Related:
https://github.com/npm/npm/issues/4713
https://github.com/npm/npm/issues/4587
Prevent creation of node_modules/npm-4503-c

The `test/tap/git-cache-locking.js` test was creating this npm-4503-c
package in the node_modules folder for npm and not cleaning up after
itself. This scopes the files to the created pkg folder in `test/tap`
and cleans up when its done.
doc: update misc/semver.md
fix indentation for code examples in package.json doc
Update uninstall documentation to include flags

This update adds the notes to use --save, --save-dev, -g, and
--save-optional to the uninstall docs.