CB-8043 CB-6462 CB-6105 Refactor orientation preference support

Fixes [CB-8043](https://issues.apache.org/jira/browse/CB-8043), [CB-6462](https://issues.apache.org/jira/browse/CB-6462) and [CB-6105](https://issues.apache.org/jira/browse/CB-6105). Touches [CB-6182](https://issues.apache.org/jira/browse/CB-6182).

Adds support for the global & platform-specific orientation preference (iOS, WP8 and Firefox). Android and Amazon Fire OS already had this functionality. Additionally, the platform-specific orientation preference now accepts a user-defined value (e.g. `reverseLandscape` for Android or `UIInterfaceOrientationPortrait` for iOS). If need be I'd be happy to update the [docs](http://cordova.apache.org/docs/en/4.0.0/config_ref_index.md.html) accordingly.

As a future improvement the orientation preference could offer a similar level of granularity to that of the native APIs. For example, iOS & WP8 APIs allow setting both an initial orientation as well as a set of supported orientations for an app. For now, developers will have to resort to a custom approach in their Cordova builds in case they've such needs.

To help keep the code maintainable I added a [cordova-lib/src/configparser/supportedPreferences.json](/MMrko/cordova-lib/tree/fix-orientation-pref/cordova-lib/src/configparser/supportedPreferences.json) that lists the supported preferences and their respective values for each platform. Maintainer input would be appreciated on this since I wonder if the approach I took here is OK. Nevertheless, a central config for preferences feels necessary.

Tested on OS X Mavericks & Windows 8 running VS 2013.
Would this mean that "portrait" is not a valid value for this preference on iOS? I think we'd want to check that it's in platformSupportedOrientations *or* PREFERENCE_ORIENTATION_VALUES