local path support in package.json

Adds support for `package.json` to have local paths, such as relative paths to packages which is helpful for testing. Also add support for `--save`, `--save-dev` to save local paths to `package.json`.

This replaces #5570.

As [recommended](https://github.com/npm/npm/pull/5570#issuecomment-47494553):

* The prepublish validation has been removed.
* Tests added. All tests should pass when couchdb is installed.
* Short circuit checks file path before assuming github shortcut for both command line and package.json.

fixes #2442
fixes #4018

and possibly others.
We really try to keep sync code out of the core of npm, because it can totally jam up installs if a lot of things are happening at once. Can you rework this to be async?