[Extension] Adding a Crash Extension and a crash "demo"
[Extension] Gracefully handle an ExtensionProcess crash.

This patch enables us to gracefully handle a crash from
ExtensionProcess. We use XWalkExtensionProcessHost::OnChannelError
since we can't really rely on XWalkExtensionProcessHost::OnProcessCrashed.
See a more complete explanation about this on the end of this commit message.

It is safe to rely on XWalkExtensionProcessHost::OnChannelError
since this function is called just before
BrowserChildProcessHostImpl::OnChildDisconnected gets called.
OnChildDisconnected() would, in turn, be the function that would
call our OnProcessCrashed(). For more information, please refer to
ChildProcessHostImpl::OnChannelError() from child_process_host_impl.cc.

This patch also adds the interface XWalkExtensionProcessHost::Delegate,
which now is implemented by XWalkExtensionService.
XWalkExtensionProcessHost::OnChannelError() calls then
Delegate::OnExtensionProcessDied().

For documentation reasons, I will elaborate on what happens when not
using zygote, which is the case of EP.
GetTerminationStatusImpl() from base/process/kill_posix.cc ends up
calling waitpid() with WNOHANG. If the extension process isn't ready
to reply its termination status by then, we won't block while waiting
for it and that function will return TERMINATION_STATUS_STILL_RUNNING
to BrowserChildProcessHostImpl::OnChildDisconnected(). When that happens,
OnProcessCrashed() ends up never being called. That is not the case
for OnChannelError(), thus we use that as our hook.
Using zygote would put the necessary infra-structure in place,
but it would also bring more than what we currently need.
Merge pull request #1123 from jeez/crash-handling

[Extensions] Handle ExtensionProcess crashes gracefully
[DBus] Add PropertyExporter and DBusManager classes

This commit bootstraps the xwalk/dbus directory with two classes we
intend to use when implementing the '--run-as-service' mode in Linux.

The 'DBusManager' is a convenience class that packages the creation of
the DBus thread and the bus connection. There need to be only one of
those for the whole Crosswalk, so it should be passed around for the
subsystems that need it.

The 'PropertyExporter' class is a partial implementation of a helper
class that exports the 'org.freedesktop.DBus.Properties' interface for a
certain 'dbus::ExportedObject'. It's interface is still incomplete, and
at the moment it will be focused on covering our use cases for
'--run-as-service'. Chromium have a infrastructure for dealing with
properties but only on the client-side, this class adds the server side.

Unit testing infrastructure, as well as basic sanity tests were
added. With these bootstrapped is easy to add new tests later. The new
target 'xwalk_all_tests' was added to include this module in the build
system.
Merge pull request #1142 from cmarcelo/xwalk-dbus

[DBus] Add PropertyExporter and DBusManager classes
Bump version to 3.32.40.0
[Extensions] Add an ExtensionServer to the UI Thread

Currently for the in-process extensions, there is a separated thread
for running the extensions. This patch adds an ExtensionServer to the
existing UI Thread, which will allow extensions that interacts with
the UI or are limited because of main loop integration to run on the main
thread.
[Extensions] Make it possible to query an ExtensionServer for an extension

This function will be used to decide on which thread the extension has
to be created.
[Extensions] Route messages to the appropriated server

Based on the extension name and the extension ID, we route the messages
to the appropriated ExtensionServer running on the Extension thread or the
UI thread.

On the in-process extensions, 2 messages that are normally directed to the
ExtensionServer on the Extension Process are now completely handled by the
filter. One example is the GetExtensions message that has to combine a list
of available extensions from two different servers in a single reply.
[Extensions] Run external extensions on the UI Thread when single process

When using the single process mode, external extensions will run on the UI
thread by default. This is more compatible with the multi process mode where
the external extensions are running in the main thread of the Extension Process.
[Extensions] Run tests on the UI Thread by default

But keep hooks for running tests on the Extension Thread if need. Extensions
requiring IO main loop will need that.
[Extensions] Add browser tests for in-process extension threads

This test verifies if extensions registered to the UI Thread are
indeed running on the UI Thread. The same applies for extensions
registered to the Extension Thread.

We also test if messages (sync and async) are working on both scenarios.
[Extensions] Fix memory leak

ExtensionData was being removed from the map but the pointer was not
being deleted.
[Extensions] Move XwalkExtensionData to its own file

This patch simply move bits around. The idea is ExtensionData is
becoming to complex to the point it deserves to be self-contained.
[Extensions] Make XWalkExtensionData a class

Add getters and accessors to XWalkExtensionData and make its attributes private.
The most important aspect here is we move the logic of how to delete the
objects owned by XWalkExtensionData from the XwalkExtensionService back to
XWalkExtensionData, making the lifecycle more consistent.