Re-land alexbost's experimental offscreenTabs API.

Original code review: http://codereview.chromium.org/7720002/
A followup code review: http://chromiumcodereview.appspot.com/9150052/

This includes some refactoring to simplify and reduce the code size:
- sharing more code between tabs and offscreenTabs
- splitting up and fixing the browser tests
- forbidding use of the API from a background page

BUG=110833
TEST=OffscreenTabsApiTest.*

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@128037 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/extension_function_dispatcher.h b/chrome/browser/extensions/extension_function_dispatcher.h
index 6a8dbe9..1fca5ad 100644
--- a/chrome/browser/extensions/extension_function_dispatcher.h
+++ b/chrome/browser/extensions/extension_function_dispatcher.h
@@ -55,7 +55,7 @@
     // Returns NULL otherwise.
     virtual Browser* GetBrowser() = 0;
 
-    // Asks the delegate for any relevant WebbContents associated with this
+    // Asks the delegate for any relevant WebContents associated with this
     // context. For example, the WebbContents in which an infobar or
     // chrome-extension://<id> URL are being shown. Callers must check for a
     // NULL return value (as in the case of a background page).