[Android] Fix crash issue in Android extension system

On Android, the extension objects and instances are deleted explicitly
by JNI invokation from Java side. However, both extension objects and
instances are designed to be owned by XWalkExtensionServer, it means
that only XWalkExtensionServer is allowed to delete them, otherwise a
pointer would be deleted twice and cause crash issue.

This fix is to address the above issue and make sure the extension
objects and instances are owned by XWalkExtensionServer. Moreover, the
extension objects on native side will be alive in the whole process
lifecycle and reused by Java-side if resuming back.

BUG=https://crosswalk-project.org/jira/browse/XWALK-821
[SysApps] Add the Storage Info data provider abstraction

This data provider was implemented differently from the CPU Info data provider.
I'm expecting the platform implementation to be more complex, so this is just an
interface.

The platform implementation should inherit from StorageInfoProvider and
provide a implementation of the static method GetInstance(). This will allow
the StorageInfoProvider[Windows|Tizen|Linux|...] to have its own attributes
and methods.
[SysApps] Make StorageInfoProvider observable

Add the Observer interface so other objects can get notifications when
a new storage is attached and detached.

It is important to remember that StorageInfoProvider must be a singleton,
so different webapps will share the same provider. This way, we don't waste
resources monitoring the same environment twice.

The provider will get a notification to start monitoring when the first observer
is added and another notification to stop monitoring when the last is removed.
[SysApps] Add a mock StorageInfoProvider

This is just a mock info provider emulating how a provider will behave in a real
life. When monitoring for file system events, it will add and remove a storage
every 1s. It will also report at least 3 non-removable storages when asked.
[SysApps] Implement the Device Capabilities getStorageInfo()

This patch implements the bits for retrieving the storage information. This is
not very diffirent for the getCPUInfo other than it is using a different
provider.
[SysApps] Add an method for checking if an Event is active

This is probably more straightforward than keeping booleans around
to check if there are listeners for a certain event.
[SysApps] Make DeviceCapabilitiesObject an EventTarget

This patch adds the native bits of the EventTarget. This will allow
DeviceCapabilitiesObject to get notifications when there is someone listening
for events, so we can start monitoring the filesystem by adding an observer.

It is important to notice that it will only add itself as an observer to the
StorageProviderInfo when there is actually some listener in the JavaScript side,
this way we don't do any monitoring if nobody is listening.

The EventTarget class triggers the StartEvent() method when the first listener
is added and the StopEvent() when the last listener is removed for a particular
event.
[SysApps] Make the JavaScript shim dispatch events

The first thing to be done is make the JavaScript DeviceCapabilties an EventTarget
(which is also a BindingObject). The BindingObjects are JavaScripts objects with
a link with some native object and they use a unique ID for routing messages
between them.

common.EventTarget.call(this) initializes the EventTarget and makes
this._addEvent() possible.

Now all the blanks are filled and we are good to go. The next step would be
replace the StorageInfoProviderMock with a real implementation for each platform
we support. No need to touch on anything else.
Fix Tizen build after PR#1489

SSIA.
Merge pull request #1493 from pozdnyakov/Fix_tizen_build

Fix Tizen build after PR#1489
[SysApps] Added StorageProvider unit tests
[SysApps] Added getStorageInfo() browsertests
Merge pull request #1461 from tmpsantos/devcap_storage

[SysApps] Implement the Device Capabilities getStorageInfo()
Bump version to 4.32.72.0
[Android] The mapping of permissions to AndroidManifest.xml.

  This feature provides the support of mapping the manifest permissisons
to AndroidManifest.xml for the web app user in packaging tool. It provides
the function interface of mapping the permissions from manifest.json to
AndroidManifest.xml based on the field parser and mapping table. It suppports
the mapping of permission fields both defined in Crosswalk and supported by
Android Manifest specification. The test cases are added accordingly.

BUG=https://crosswalk-project.org/jira/browse/XWALK-651
[SysApps] Implement the Device Capabilities getDisplayInfo()

This provider is missing an Observer interface for notifications
of displays being connected and disconnected. This is very likely to
be platform dependent and we might need to add platform files.

Currently we only using a static method, but I'm keeping the GetInstance()
for the display monitoring implementation.
[SysApps] Added DisplayInfoProvider unit tests
[SysApps] Added getDisplayInfo() browsertests
Implement Screen Orientation API through extension (Part 1)

Spec: https://dvcs.w3.org/hg/screen-orientation/raw-file/tip/Overview.html

This patch implemented lockOrientation and unlockOrientation API through extension.
And the followed patchs will implement onorientationchange event.

Test: http://jsbin.com/IJapIVE/4

BUG=https://crosswalk-project.org/jira/browse/XWALK-162
[Android] Use interceptor for app scheme on Android

It's a hot fix, the app scheme protocol handler need to polish
for different platform.
The previous commit 1a01300019d3 removes the condition for adding
app scheme handler. But on Android, the app scheme handler is
different and added in UrlRequestContextGetter, which is more appropriate
place to add protocol handler by the way.

This commit uses interceptor for android app scheme handler instead to
avoid set app scheme handler multiple times. Otherwise, it causes crash
on debug build and white screen for app url on release build.

BUG=https://crosswalk-project.org/jira/browse/XWALK-867