User MessageLoopForIO::WatchFileDescriptor in proces_output_watcher

The main point is to avoid usage of select for observing process'
pseudo-terminal fd. Main problems with select is that it doesn't work
for fd > 1024, which started to be passed to ProcessOutputWatcher.
Added benefit of MessageLoopForIO::WatchFileDescriptor is that it's async,
so it enables us to do some clean up for process proxy thread management.

BUG=495165
TEST=Open a lot of crosh tabs (e.g. ~30). Crosh is started in all of them.

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

Cr-Commit-Position: refs/heads/master@{#342716}
diff --git a/chromeos/process_proxy/process_proxy_unittest.cc b/chromeos/process_proxy/process_proxy_unittest.cc
index 20221c2..b7b7c7f5 100644
--- a/chromeos/process_proxy/process_proxy_unittest.cc
+++ b/chromeos/process_proxy/process_proxy_unittest.cc
@@ -208,6 +208,8 @@
       process.Terminate(0, true);
     }
 
+    registry_->ShutDown();
+
     base::ThreadTaskRunnerHandle::Get()->PostTask(
         FROM_HERE, base::MessageLoop::QuitClosure());
   }