[Android] Fix text selection menu being auto-dismissed in some cases

In previous xwalk implementation, the load operation will trigger
a pair of clear/request focus operation. Which makes the text selection
context menu hide immediately after it shows sometimes.

The fix is to only request focus when loading url.
[Tizen] Fix Glib assertion due to appcore_context.

This patch get rid of following log:
[ERROR:browser_main_loop.cc(228)] GLib: g_source_destroy: assertion `source != NULL' failed

AppcoreContext::Initialize() fails when we launch xwalk in the shell. e.g. > xwalk
It is because appcore_init() can success only if registered application (e.g.
web applications) is launched.

This patch handles the exception that AppcoreContext::Initialize() fails.
[Android] Fix #705 to support multiple frames for extension mechanism

When there are multiple frames in one page, extension instance will
be created for each frame. But as internal WebFrame is not exposed
in Java side, there is no way for Java side to identify which
instance to send message. This patch exposed instanceID up to Java
side when it receives message which can be used to identify the
target instance when post message to JavaScript side. What's more
a new interface "broadcastMessage" was added to meet the requirement
that Java side may need to broadcast message to all exiting instances.

Changed interfaces for Java extension:
1. postMessage(String msg) -> postMessage(int instanceID, String msg)
2. onMessage(String msg)   -> onMessage(int instanceID, String msg)
3. onSyncMessage(String msg) -> onSyncMessage(int instanceID, String msg)
4. new added: broadcastMessage(String msg)

BUG=#705
Fix build for Windows.

Windows switched to Aura therefore we need to remove the old code
path and use the generic method to access the title. The compilation
failure was due to the fact that NativeWindow type is not anymore
a HWND.

BUG=936
[Extensions] Add XWalkJSModule

A XWalkJSModule implements the XWalkNativeModule interface by executing
a JavaScript code everytime an instance is required. This allow us to
easily provide JS helpers and libraries to extension writers.

This will be used to remove the global definitions we use for "internal
extensions" functionality.
[Extensions] Change how "internal extension" helper is exposed

When writing extensions inside Crosswalk, we have the option of
generating an input validator / parameter serializer based on an IDL
file.

We exposed this facilities inside a "xwalk" namespace and wrapped them
for each extension being loaded. Unfortunately this also ended up
exposing these functions to web content.

This patch changes the code to use the new XWalkJSModule. The setup
process became a different, now extensions that use this facility,
should do:

   // Setup for using the facilities.
   var internal = requireNative("internal");
   internal.setupInternalExtension(extension);

   // And to post a message.
   internal.postMessage(...);

Most of the code used to create an 'internal' variable anyway, so in
practice this change affects only the setup.
[Windows] Remove uneeded files after the move to Aura.

We don't need these files as we moved to Aura. They are excluded
from the build upstream.
Bump version to 2.31.22.0
[Android] Fix incorrect res ids for apps using cordova xwalk

Cordova xwalk container is using xwalk core library as an
Android library project.
For Android library project, it will generate the R.java for
it when building the project depends on it (Let's call it app
project). But the R.class will be excluded when generating
classes.jar. Then the resources within both app and library will
be put together to generate R.java for both app and library
package, it is to make sure the ids for them will not be conflicted.

Meanwhile, the dependencies for android java target in gyp system
is not the same. It breaks down the ant tasks and customized them
in very complicated way, each java src target which contains resources
will produce an R.txt which has allocated ids in it. The project
depends on it will generate R.java based on that to avoid conflicts.

The two things can't work together, but the command line interface
cordova container provides to developer should not be changed.

The solution is here,
Take all resources within xwalk core library as resrouces for library.
An R.java will generated at code-gen step for them. This patch will
overwrite the pre-compile step between code-gen and compile.
The step will copy R.java for core library to package
org.chromium.content and org.chromium.ui, as well as replace the
determined id values in it with the references to org.xwalk.core.R.

BUG=https://github.com/crosswalk-project/crosswalk/issues/862
[Android] Create the XWalkRenderViewExt object.

XWalkRenderViewExt is a class that handles several IPCs from the class
XWalkRenderViewHostExt. To make it work, an object of XWalkRenderViewExt
must be created first.
[Android] Return the correct context for external extensions

The previous implementation returns the context of runtime side which is
a context for library package. This is true for internal extensions. However,
for external extensions, the context should be the same as the activity
because they're inside of runtime client. This is to fix the issue to return
the activity as the context for external extensions.

BUG=#777
[Android] Add one interface to set whether to load external extensions.

For some usage scenarios, external extensions are not needed
because it has its own plugin or extension mechanism. Hence here a new
method is used to enable/disable the mechanism to load external extensions.

BUG=#948
[Android] Define the class XWalkRuntimeViewProvider as an interface.

It's an abstract class and some shared implementations are included
and will be used by inherited classes. However, xwalk core library needs
an interface which will be implemented by the container.
To meet this requirement, split this class into two: one interface containing
all methods and the base class to contain some shared implementations like
managing extensions.
[Runtime] Add initial support for application Event object

An application event is an event send to application and will be handled by main
document. An system event is event sent by the system and can wake up a
terminated application. They're different from normal DOM event which originated
from the DOM element. The application event API will provides an interface to
add/remove listeners which will be called when such event happens. Please note
that only when a system event adds hanlers from main document it can launch
a terminated application.

Currently the application Event object support is an implementation of
chrome.events.Event API(https://developer.chrome.com/apps/events.html) subset.
Event.addListener, Event.removeListener, Event.hasListener and
Event.hasListeners APIs are supported.