Rate limit programmatic update checks for extensions (reland)

Previously extensions could call the runtime.requestUpdateCheck method
as often as every 5 seconds. This CL introduces a more restrictive
policy of around one extra check per autoupdate period, and changes the
implementation location of the rate limiting from within the
ExtensionUpdater code itself to the ChromeRuntimeAPIDelegate, and makes
it more flexible by using net::BackoffEntry.

This is a reland of https://codereview.chromium.org/1887253002, with
the removal of a static initializer.

BUG=599310

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

Cr-Commit-Position: refs/heads/master@{#388654}
diff --git a/extensions/browser/event_router.h b/extensions/browser/event_router.h
index c90a335..e93110d3 100644
--- a/extensions/browser/event_router.h
+++ b/extensions/browser/event_router.h
@@ -164,8 +164,8 @@
   bool HasEventListener(const std::string& event_name);
 
   // Returns true if the extension is listening to the given event.
-  bool ExtensionHasEventListener(const std::string& extension_id,
-                                 const std::string& event_name);
+  virtual bool ExtensionHasEventListener(const std::string& extension_id,
+                                         const std::string& event_name);
 
   // Return or set the list of events for which the given extension has
   // registered.