Manifest handler for all keys background-related.

Changes the manifest handler registration interface to (new Handler)->Register() and requires handlers to declare what keys they parse in Keys().
Also fixes const correctness in Manifest::Get* and ManifestHandler.

Based on https://codereview.chromium.org/12256031/.

BUG=159265
[email protected]

Review URL: https://chromiumcodereview.appspot.com/12253022

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@185391 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/extension_protocols_unittest.cc b/chrome/browser/extensions/extension_protocols_unittest.cc
index a8274f94..48fffb6 100644
--- a/chrome/browser/extensions/extension_protocols_unittest.cc
+++ b/chrome/browser/extensions/extension_protocols_unittest.cc
@@ -76,14 +76,14 @@
         resource_context_.GetRequestContext();
     old_factory_ = request_context->job_factory();
 
-    ManifestHandler::Register(extension_manifest_keys::kIcons,
-                              make_linked_ptr(new IconsHandler));
+    (new IconsHandler)->Register();
   }
 
   virtual void TearDown() {
     net::URLRequestContext* request_context =
         resource_context_.GetRequestContext();
     request_context->set_job_factory(old_factory_);
+    ManifestHandler::ClearRegistryForTesting();
   }
 
   void SetProtocolHandler(bool incognito) {