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.