CB-6691: Change some instances of Error() to CordovaError()

Full stack is printed out when Error is thrown, but only the message for
CordovaError. Left it as Error in several paces I wasn't sure about.
Use "npm cache add" for downloading plugins

Plugins were downloaded using the request library. Changing the registry.js
code to use "npm cache add" as the main fetching mechanism. This results in
considerably less code to maintain.

Npm's default proxy settings are used automatically (unless overridden in
~/.plugman/config).

Platform fetching done by cordova/fetch should eventually use npm as well, but
this will require publishing the platforms as npm package tarballs.
Use "npm info" for fetching plugin metadata

npm info is an alias for npm view.

By default npm view won't call the registry if there is a recent .cache.json
file for this package.
Forcing npm to ignore the cache by setting cache timeouts to 0
via npm settings cache-min = cache-max = 0.
Remove --force from default npm settings for plugin registry

Changed to setting --force specifically for (un)publish where it's needed
and removed it from the default settings.

For publish --force is needed when overwriting an already published version.
Otherwise the registry will reply with a 409 HTTP response.

For unpublishing the registry only allows to unpublish specific versions,
if you want to remove the entire thing with all the published version
--force is needed.
added dev to version number
Add --noregstry flag for disabling plugin lookup in the registry
CB-6668: Use <description> for "plugin ls" when <name> is missing.

Plugin listing looks like the output below. The last column is now
plugin.name || plugin.description

$ cordova plugin ls
com.test.plugman 0.1.1 "plug_test"
org.apache.cordova.file 1.1.0 "File"
org.apache.cordova.statusbar 0.1.3 "StatusBar"
Style fixes in plugman/insall.js, jshint runs with no warnings
Remove unused code from plugman/install.js

isPluginInstalled() function was defined twice with exactly the same body.

"usused:vars" directive for jshint means it will warn about unused variables
but not about unused function parameters.
Initial implementation for restore and save plugin

Adds a new save command to CLI which persists the currently added plugins to config.xml. There
is also an accompanying restore command which scans the config.xml and
restores the missing plugins that are listed.  Adds a new function to ConfigParser for adding
features. Updates plugin rm command to print a warning to also remove a
plugin that has been added to config.xml as a restore target.

Adds two new test for the new commands namely restore.spec and save.spec and
enhances the existing ConfigParser.spec for the new addFeature function.