Store `cache` in per-registry config files

Move the code setting npm `cache` option from `sl-registry use` to
`sl-registry add`. This way the ini file contain all configuration
options and can passed as --userconfig to npm.

Side effect: the "default" configuration uses the default npm cache
directory ($HOME/.npm) now, unless configured otherwise in user config
($HOME/.npmrc).
test: refactor helper functions to helpers/sandbox

Modify helpers/sandbox to include all lib/storage functions
(e.g. `writeIniFile`, `load`, `getCachePathForName`).

Move test-specific methods from test/cli.test to test/sandbox:
 - givenAdditionalEntry
 - getUserNpmRc
 - givenUserNpmRc
 - readUserNpmRrc

Refactor initialization of storage & default config, move it from
test/cli.test to test/sandbox. Modify the initialization to call
`storage.init` and `RegistryConfig.createDefault` directly instead
of running the cli. This cuts down the time to run tests to half.
test: split cli suite into smaller files

Create one test file per the command tested:
 - test/cli-add.test
 - test/cli-remove.test
 - test/cli-remove.test
 - test/cli-use.test

Move `itOnUnix` to helpers/it-on-unix to allow reuse.
Extract spawnNpmLogin into standalone file.
Extract RegistryConfig hasAuthCredentials

Move the code determining whether the registry config has auth
credentials and whether it requires `npm login` to a standalone file
to allow reuse.
refactor: storage.loadOrExit
Implement `promote` command

The command downloads the given package version from one registry
and publishes it to another registry.

Usage:
  sl-registry promote --from <name> --to <name> <package>@<version>

Related change(s):
 - extend spawn-npm-login to support --userconfig option
 - move quoteArg to a standalone file
promote: Implement defaults for --from and --to

Use the current registry configured in ~/.npmrc as the default value
for --from and --to arguments.

Extract RegistryConfig.findByUrl() from lib/commands/use.js.
promote: correctly support default npm cache path

The default registry entry does not contain "cache" option, npm falls
back to the default path ($HOME/.npm). This commit modifies the
algorithm used to find the tarball downloaded by `npm cache add`
to support the default cache location too.

Fix lib/exec-npm to forward HOME and USERPROFILE environment variables.
Without that, npm uses /tmp/npm-{uid}/.npm as the default cache dir.
list: mention -h option

Modify the output of the `list` command to mention `-h` option and the
fact that there are more commands that just `use`.
promote: use $HOME/.npmrc when appropriate

When one of the --from/--to registries is currently in use,
the promote command uses $HOME/.npmrc instead of the strong-registry
ini file.

That way the current (possibly updated) configuration is used;
the changes made by `npm login` are stored in npmrc and thus
sync-ed to the ini file later.
Merge pull request #7 from strongloop/feature/promote-republish

Implement command `promote`