[Extensions] Make ExtensionService not be ref-counted

Use weak pointers instead, which makes it easier to reason about lifetimes.

Make CrxInstaller et al. use a weak pointer instead.

Add MakeCrxInstaller() function to ExtensionService.

Make WebUI handlers use a raw pointer (since they will always get destroyed
before the profile does).

Make tests use raw or scoped pointers, as appropriate.

Rename extensions_service to extension_service where encountered.

Add checks for BrowserThread::PostTask.

BUG=
TEST=

Review URL: http://codereview.chromium.org/6873065

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@82257 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/test/testing_profile.cc b/chrome/test/testing_profile.cc
index 606bfcb..3a4c3a7 100644
--- a/chrome/test/testing_profile.cc
+++ b/chrome/test/testing_profile.cc
@@ -202,9 +202,9 @@
   // FaviconService depends on HistoryServce so destroying it later.
   DestroyFaviconService();
   DestroyWebDataService();
-  if (extensions_service_.get()) {
-    extensions_service_->DestroyingProfile();
-    extensions_service_ = NULL;
+  if (extension_service_.get()) {
+    extension_service_->DestroyingProfile();
+    extension_service_.reset();
   }
   if (pref_proxy_config_tracker_.get())
     pref_proxy_config_tracker_->DetachFromPrefService();
@@ -358,13 +358,13 @@
       new ExtensionPrefs(GetPrefs(),
                          install_directory,
                          extension_pref_value_map_.get()));
-  extensions_service_ = new ExtensionService(this,
-                                             command_line,
-                                             install_directory,
-                                             extension_prefs_.get(),
-                                             autoupdate_enabled,
-                                             true);
-  return extensions_service_;
+  extension_service_.reset(new ExtensionService(this,
+                                                command_line,
+                                                install_directory,
+                                                extension_prefs_.get(),
+                                                autoupdate_enabled,
+                                                true));
+  return extension_service_.get();
 }
 
 FilePath TestingProfile::GetPath() {
@@ -420,7 +420,7 @@
 }
 
 ExtensionService* TestingProfile::GetExtensionService() {
-  return extensions_service_.get();
+  return extension_service_.get();
 }
 
 UserScriptMaster* TestingProfile::GetUserScriptMaster() {