Add support to the UI Service to run it insider browser's process.

When UI Service runs inside the browser process in its own separate thread,
there is a few things it needs to do differently:

 1. It shouldn't set its Screen as a global singleton.
 2. It shouldn't set its ClientNativePixmapFactory as a global singleton.
 3. It can't access the ResourceBundle from its own thread - that can only be
    done from the browser thread.

The third point is the source of most of the complexity in this CL. UI Service
needs to manipulate the cursor, which is done through the ui::ImageCursors
object, which needs to load resources. Since resources can't be loaded on the
UI Service's thread, a mechanism is introduced to let the UI Service do this by
posting tasks to the browser's thread task runner, which is passed into the
UI Service's constructor.

This CL doesn't contain browser-side changes to run the UI Service in-process.

BUG=722527

Review-Url: https://codereview.chromium.org/2979933002
Cr-Commit-Position: refs/heads/master@{#486509}
24 files changed