[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