Support remote installation of extensions and apps.

To enable this support, the following things are changed:
* ExtensionSyncData, and the ExtensionSpecifics protobuf have a new
  remote_install field, to mark a remotely installed extension.
* A new DISABLE_REMOTE_INSTALL reason is added to track this state
  locally.
* CrxInstaller::allow_silent_install is changed from a bool to a
  three-state enum, where the options are:
    - install after showing a permission prompt,
    - install and grant all permissions without a prompt and
    - install without a prompt and don't grant any permissions
* AddExtensionDisabledError is modified to keep track of the disable
  reasons, and change the text that is displayed accordingly.
* ExtensionInstallPrompt has a new prompt type with different text
  for remotely installed extensions.

BUG=365737

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@270900 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/pending_extension_manager.h b/chrome/browser/extensions/pending_extension_manager.h
index 96dfa6e..bf2e1fc7 100644
--- a/chrome/browser/extensions/pending_extension_manager.h
+++ b/chrome/browser/extensions/pending_extension_manager.h
@@ -84,7 +84,8 @@
       const std::string& id,
       const GURL& update_url,
       PendingExtensionInfo::ShouldAllowInstallPredicate should_allow_install,
-      bool install_silently);
+      bool install_silently,
+      bool remote_install);
 
   // Adds an extension that was depended on by another extension.
   bool AddFromExtensionImport(
@@ -132,7 +133,8 @@
       bool install_silently,
       Manifest::Location install_source,
       int creation_flags,
-      bool mark_acknowledged);
+      bool mark_acknowledged,
+      bool remote_install);
 
   // Add a pending extension record directly.  Used for unit tests that need
   // to set an inital state. Use friendship to allow the tests to call this