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.
CB-6815 Add license to CONTRIBUTING.md
CB-6823 Improve test for is source path ancestor when using copy-from or link-to
Add npm cache based downloading to lazy_load

lazy_load was downloading platforms files from github using a url like this
git-wip-us.apache.org/repos/asf?p=cordova-ios.git;a=snapshot;h=3.5.0;sf=tgz

This change adds the possibility to donwload platform file from npm registry
E.g. cordova-ios is published here https://www.npmjs.org/package/cordova-ios

By default the old way is still used, to use npm add --usenpm flag to cordova
cli or opts.usenpm=true in opts parameter of the cordova.raw.platform()
function.
CB-6854 Strip BOM when adding cordova.define() to js-modules
CB-6698: Support library references for Android via the framework tag
Extract AndroidProject class into a separate .js file
Remove trailing spaces in all js files

So that everyone can use auto removal of trailing spaces without generating
unwanted diff lines. Only white space changes, nothing else.
This also adds newlines at the end of files that didn't have them.

Files used in testing fixtures are not affected.

The command used:
sed -i '' 's/[[:space:]]*$//g' **/*.js