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-6698: Support library references for Android via the framework tag
Extract AndroidProject class into a separate .js file