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.
support for shrinkwrap flag

Adds support for a shrinkwrap flag. Unless the flag is specified the saved
data will not contain the version information.
CB-6709 Remove merges/ folder for default apps
Fix create.spec - don't expect merges dir

The merges dir was removed from the default app. Remove it from the list of
dirs the create spec expects to exist.
Start using PluginInfo object in plugman/install.js
CB-6711: Use parseProjectFile when working with XCode projects.

Otherwise the changes get overwritten by the cached version of the project file.
This is due to double caching between ConfigKeeper and parseProjectFile.
Add a unit test to guard against similar bugs in the future.

github: close #15
CB-5421 fix windows8 test

The following error message doesn't show any longer when running
npm test
ls: no such file or directory: /some/path/platforms/windows8/www

github: close #8
CB-6772 Provide a default for AndroidLaunchMode
CB-6767 Allow `cordova` to be replaceable

Allow to specify the name of the binary for phrasing error and warning messages
with the proper binary name.

github: close #20
Extend PluginInfo to parse more of plugin.xml
Use PluginInfo in plugman/install.js

This changes plugman/install.js to use PluginInfo instead of direct xml parsing
for plugin.xml. There is still some xml parsing left because those xml elements
are passed down to ActionStack.