Show error to user on npm update

If a dependency is listed in the package.json, but the version does not
exist, show the user an error stating so.

Fixes #1770
Add CONTRIBUTING.md directing people to the wiki.
Document the 'depth' argument for `npm-ls'.
Verify ownership of git cloned/fetched files

In the case when people use `sudo npm install -g` some of the cloned git dependencies go to the npm cache. In this case when npm executes git clone or fetch, git sets ownership to root. This cases troubles when you try to do later `npm install` for dependencies which already under npm_cache/_git-remotes/ and has root ownership.

This change can cause performance degradation when you have a lot of git dependencies, because each time when you ask for git dependency - it will verify ownership first for all files under git folder. Better option will be to change ownership only for new fetched/cloned files.
Skip changing ownership on win32