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.