Move initialization of in-process thread factories

In the upstream code, the in-process thread factories were being initialized
inside ContentMainRunner::Run.  Since blpwtk2 does not invoke
ContentMainRunner::Run, this caused '--single-process' and '--in-process-gpu'
to not work.

This commit moves the registration of these in-process thread factories to
'ContentMainRunner::Initialize' so that they will be correctly installed when
using blpwtk2.
Manually invoke some WebContentsObserver callbacks

DRQS 54984217

When WebContentsCreated() is called, we create a new WebViewImpl, which sets
itself up as a WebContentsObserver.  However, we don't receive the
'RenderViewCreated' and 'AboutToNavigateRenderView' callbacks (presumably
because they have already happened).  This causes problems because certain
things (like sending the in-process renderer info, setting up rubberbanding)
were not being done.

This commit fixes this by manually invoking these methods on the new view.
Gracefully handle unexpected shutdown of client processes

DRQS 51793241

If a blpwtk2 client process gets killed unexpectedly, we need to cleanup the
resources held by the ProcessHostImpl, as if the client process cleaned up
after itself.

In order to do this, we need to be able to delete IPC::Listener objects.
However, the destructor is protected, so we cannot delete it directly.  This
commit adds an intermediate ProcessHostListener interface that exposes the
destructor.  This interface is also a placeholder for future enhancements that
are common between ProfileHost and WebViewHost.
Use 'size_t' instead of 'int' for string length

This is a change to the public interface for 'blpwtk2::StringRef' and
'blpwtk2::String'.
Merge branch 'feature/blpwtk2' into release/candidate
Merge version 31.0.1650.63_bb4

This update changes the 'length' property in blpwtk2 strings to use 'size_t'
instead of 'int', and also contains bug fixes.