Fix race crash in IAppFinder

IApp finder posted to a virtual function from the constructor so the vtable may not been constructed when the task ran.  This change uses a Start method to avoid the problem.

BUG=304164
R=dmichael@chromium.org, gbillock@chromium.org

Review URL: https://codereview.chromium.org/26038002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@227087 0039d316-1c4b-4281-b951-d872f2087c98
Only show virtual keyboard on primary root window

In order to display virtual keyboard(VK) only on primary root window,
this CL did
1. Shell takes ownership of keyboard controller(KC) instead of
RootWindowController
2. keyboard container window is owned by KC instead of its parent

There should only be one KC and one keyboard container at any time after
this change. keyboard container can be dynamically enabled/disabled on a
RootWindowController at runtime. If you want to do that,
you should DisableKeyboard on the previous RootWindowController first and
then EnableKeyboard on the new RootWindowController.

BUG=297858
TEST=
1. enable virtual keyboard from about::/flags on a Chromebook
2. plug in an external monitor

verify only one virtual keyboard shows

Review URL: https://codereview.chromium.org/25111002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@227088 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 227088