Fix subtle bug with the in-process utility thread usage in unit tests.

Recently this started flaking. The problem was that the exit manager (or the shadowing one if it was there) would run before the in-process utility thread shutdown. Since the thread was holding on to g_one_utility_thread_lock, the exit manager would try to destroy that LazyInstance but it would fail because the lock was still owned by a different thread.

The fix is to ensure that the utility thread is gone. This is done by waiting for all UtilityProcessHost objects to get destructed. This wasn't happening before because the tests would just wait for their app-specific IPC from the utility thread, which is dispatched before the OnChannelError in ChildProcessHost ends up killing the UtilityProcessHost.

BUG=316919
R=scottmg@chromium.org

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

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