Ensure only matching deps update with update --save*

Issue #4438
Add update --save/--save-dev tests.
Test update + optional dependencies behaviour.
Stop optional deps moving into deps on update --save

This probably undesirable behaviour stems from normalize-package-data:

> The values in optionalDependencies get added to dependencies. The
optionalDependencies array is left untouched.

Solution Caveat: regular dependencies that are also optional (does that
even make sense?) will not be updated with --save because there's no
way to detect which optional dependencies aren't also regular
dependencies – we just avoid updating anything optional during --save.
Fix #5200: only show warning when canceling `npm init`
read-installed@2.0.3

peer dependencies can be satisfied by grandparent
Allow non-github repositories with `npm repo`
Don't immediately show spinner on login

Currently, the spinner is shown as soon as the username prompt is shown
for `npm login`/`npm adduser`.  This only stops the spinner until the
actual registry request is made.
fix cygwin encoding issue

make sure that npm script runs on cygwin platform even when installed in DOS encoding
cf. http://sourceware.org/ml/cygwin-announce/2009-07/msg00002.html (option 4a)
npm-registry-client@0.4.9
make new semver stop warning
Send npm version as 'version' header
npm-registry-client@0.4.10
npm-user-validate@0.1.0
npm-registry-client@0.4.11
Correct complexity numbering in npm-faq

Number the complexity hurdles in the "renaming node_modules" section using natural numbers (1, 2, 3, 4) instead of Fibonacci Sequence numbers (1, 2, 3, 5).
npmconf@1.0.0, Refactor config/uid/prefix loading process

Closes #4751
npm-registry-client@0.4.12
Add project .npmrc file

Moving away from publishConfig, towards per-project config.

This means I can stop typing '--save-prefix=~' every time I install
a dependency in npm!  Hooray!
fix test/tap/install-save-prefix.js