CB-5720 add resource-file to plugin.xml
CB-5720 add resource-file to plugin.xml for all platforms
reverted last change because ios does already support resource-file
CB-5720: emit warning if resource-file is not supported on platform
config-changes.js: Unindent by one level
config-changes.js: Change to named functions and fix jshint warnings.
config-changes.js: Some simple changes & moving funcs around for better readability.

Replaced several instances of require('./../platforms') with a single one. The
reverse of this was done some time ago for a mysterious and undocumented reason
here:

github.com/apache/cordova-plugman/commit/f025a2a98a4bec04d825d0ac1bd55e4fce61b37a
config-changes.js: require('../../plugman').emit() -> events.emit()

Looks like the in place require was due to some problem with jasmine
that failed with "this" not being properly bound for plugman.emit()
config-changes.js: Moved add_plugin_changes() to new class "PlatformMunger".

The class is expected to eventually contain most of the code in this file.
config-changes.js: Added ConfigFile class to abstract details config files.

For now it is only intended for files in the project_dir, not
for plugin.xml and platform.json.

cordoova create/plugin add file-transfer/prepare
results in identical cordova project dir tree as master (empty diff).
config-changes.js: Convert remove_plugin_changes() to use PlatformMunger
config-changes.js: Minor changes
config-changes.js: Removed plugins-plist support.
config-changes.js: Add pbxproj to ConfigKeeper.

ios.parseProjectFile() is extremely slow.
Use xcode directly to load pbxproj file as one of ConfigFiles cached by
ConfigKeeper.
config-changes.js: Add separate functions to manipulate munge objects.
config-changes.js: Moving funcs around.

No real changes, some comments and rearrangements.
config-changes.js: Moved functions into PlatformMunger.
config-changes.js: Rename add/remove_plugin_changes.

Renamed back to add_plugin_changes / remove_plugin_changes
kept them with different names during refactoring to avoid collision
with the old funcs.
config-changes.js: Add reapply_global_munge().

Load and apply the full munge from platform json.
To be used by cordova prepare.
config-changes.js: Address review comments.

 - Use ConfigKeeper for plugin.xml
 - Don't write out platform JSON from get_platform_json.
 - Pretty print platform JSON.
 - Use "exports" instead of "package" and "module.exports".

Rebased on top of current master where another caching mechanism for iOS project files
was introduced in commit 1655ada. Keeping both of them for new because for now
ConfigKeeper doesn't help to speed up adding multiple plugins. Added a TODO
comment to remove caching from ios parser once multiple plugins can be
installed with a single instance of PlatformMunger.