Move ChromeRequirementsChecker to //extensions as a PreloadCheck

Remove the "Chrome" from ChromeRequirementsChecker. Make it implement
PreloadCheck and simplify its async logic a bit. Transform
RequirementsCheckerBrowserTest to a unit test.

This lets AppShell and other modules use RequirementsChecker. (This
wasn't possible until GPUFeatureChecker was moved to //content in
http://crrev.com/2666243002.)

BUG=679971
[email protected]
[email protected]

Review-Url: https://codereview.chromium.org/2783813002
Cr-Commit-Position: refs/heads/master@{#462607}
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
index 06617e6d..9338f19 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -654,7 +654,9 @@
       extensions::UnpackedInstaller::Create(this)->LoadFromCommandLine(
           base::FilePath(t.token()), &extension_id, false /*only-allow-apps*/);
       // Extension id is added to whitelist after its extension is loaded
-      // because code is executed asynchronously.
+      // because code is executed asynchronously. TODO(michaelpg): Remove this
+      // assumption so loading extensions does not have to be asynchronous:
+      // crbug.com/708354.
       if (switch_name == switches::kDisableExtensionsExcept)
         disable_flag_exempted_extensions_.insert(extension_id);
     }