[Android] Refactor Java extension system

The commit is to decouple the extension from XWalkRuntimeViewProvider
and simplify the interfaces exposed by XWalkRuntimeViewProvider. Now it
is easy to use the extension system by creating a new
XWalkExtensionManager.

The backend implementation for XWalkExtension is abstracted as
XWalkExtensionBridge interface. Currently, one backend implementation
based on xwalk core is provided as default.

BUG=https://crosswalk-project.org/jira/browse/XWALK-148
[Android] Add content scheme support

The content scheme is for the Uris used by android content
provider. They are commonly used on android to retrieve
resources.

For detail information of android content provider, please referring
http://developer.android.com/guide/topics/providers/content-providers.html.

BUG=https://crosswalk-project.org/jira/browse/XWALK-165
TEST=org.xwalk.core.xwview.test.LoadUrlTest#testContentUrl
[Android] Add extension JS files to runtime client embedded shell

Fixes bug that runtime client embedded shell can not find Javascript
stubs of runtime internal extensions.

BUG=https://crosswalk-project.org/jira/browse/XWALK-126
[Android] Fix the issue that geolocation information can't be fetched.

The geolocation related Web API can't work due to the problem of crosswalk.
The root cause is that the activity status is not initialized so that
internal features like location provider can't get the correct status.
Fix it by passing the application to content layer and add the permissions
in AndroidManifest.xml.

BUG=https://crosswalk-project.org/jira/browse/XWALK-151
[SysApps] Add Raw Sockets stub

Just the skeleton to serve as base for the interfaces implementation. No API is
currently exposed.
[SysApps] Add the TCPSocket implementation

This is the initial implementation of the W3C's Raw Sockets TCPSocket interface.
It is not complete but is fully functional. Some issues with the spec are being
worked with the standardization body, like the fact that the send() method is
technically sync (although we implement as async always returning true).

A notable missing feature is the throwing of exceptions on invalid parameters,
but the error callback is still called under these circumstances.

We also add the RawSocketObject class. This class is going to concentrate all
the shared code among the different interfaces of the Raw Socket API. Currently only
the ReadyState is shared.
[SysApps] Make it possible to create a TCPSocket from a connected socket

The TCPServerSocket will need to create a TCPSocket from incoming connections.
This patch makes it possible to create an object in the native side first and
handle the identifier to the JavaScript context.
[SysApps] Add TCPServerSocket implementation

Added an incomplete but functional implementation of the
Raw Sockets TCPServerSocket interface.
[SysApps] Add browser tests for the Raw Socket JavaScript API

Tests if the objects are leaky and if the basic functionality like
send and receive data works. These tests are not API conformance tests.
Merge pull request #1059 from tmpsantos/raw_socket3

[SysApps] Raw Socket API implementation
[Android] Refine the test case about onPause and onResume.

This patch refined the test case about onPause and onResume on
embedded and shared mode. It's for the runtime client.
Invoke onPause or onResume on main thread, wait for some seconds
to ensure that action is done, get the first title. Then wait for
some milliseconds, get the title again. Compare the two titles.

We can not use the TimerTask directly, because it creates an external
thread which was not executed when the main thread exits.

For embedded client test:
1. install XWalkRuntimeClientEmbeddedShell.apk
2. python build/android/test_runner.py instrumentation \
--test-apk=XWalkRuntimeClientEmbeddedTest -v -f testPauseResume

For shared client test:
1. install XWalkRuntimeLib.apk
2. install XWalkRuntimeClientShell.apk
3. python build/android/test_runner.py instrumentation \
--test-apk=XWalkRuntimeClientTest -v -f testPauseResume
Merge pull request #1074 from hmin/extension-refactor

[Android] Refactor Java extension system
[Android] Allow geolocation context permission for crosswalk.

Geolocation context permission has to be handled in crosswalk for Android
port. It's used to allow geolocation access for origins. This fix is to allow
requests from different origins for geolocation information with the
in-memory cache mechanism.
Currently we allow all origins to access the geolocation information
if the web app is granted with the permission.

BUG=https://crosswalk-project.org/jira/browse/XWALK-151
Merge pull request #1088 from wang16/content_scheme

[Android] Add content scheme support
Merge pull request #1103 from DonnaWuDongxia/embed

[Android] Add extension JS files to runtime client embedded shell
Merge pull request #1117 from wuhengzhi/pauseResume

[Android] Refine the test case about onPause and onResume.
Merge pull request #1113 from yongsheng/xwalk151

[Android] Allow geolocation context permission for crosswalk.
Refactor XWalkBrowserMainParts: remove '#ifdef' hell

XWalkBrowserMainParts class had become an #ifdef hell, and had got even worse with all these HasSwitch(kInstall) and so on – that needed fixing, otherwise the code could become hard to maintain and the likelihood of bugs appearance could increase.

This patch introduces a separate "browser main parts" class for Mac, Tizen and Android derived from base generic XWalkBrowserMainParts class, thus removing platform specific functionality (and ifdefs) from XWalkBrowserMainParts.