Add support for GCM subtypes to desktop Instance ID implementation

Adds support for subtypes to the desktop Instance ID
implementation. A follow-on patch will switch Web Push
to use subtypes on desktop. Chrome Apps/Extensions will
be unchanged.

The main benefit will be consistency between desktop
and Android - both will be able to use subtypes for the
app_id, rather than sending app_id to GCM as the
category field (package name) on desktop only. This will
avoid spamming GCM's category column with many unique
values (since each app_id that Push generates contains
a random GUID).

Part of a series of patches:
1. https://codereview.chromium.org/1832833002 adds InstanceIDWithSubtype
2. https://codereview.chromium.org/1830983002 adds JNI bindings
3. https://codereview.chromium.org/1829023002 adds fake and test
4. https://codereview.chromium.org/1899753002 fixes strict mode violations
5. https://codereview.chromium.org/1854093002 enables InstanceID by default
6. https://codereview.chromium.org/1953273002 extends the GCMKeyStore
7. https://codereview.chromium.org/1923953002 integrates IIDs with crypto
8. this patch
9. https://codereview.chromium.org/1851423003 switches Push to InstanceIDs

Also depends on
- https://codereview.chromium.org/2148163003 fix test asserts
- https://codereview.chromium.org/2217803003 EXPECT_DCHECK

BUG=533498,589461

Review-Url: https://codereview.chromium.org/2111973002
Cr-Commit-Position: refs/heads/master@{#413259}
diff --git a/components/gcm_driver/DEPS b/components/gcm_driver/DEPS
index 4423dce1..97433dd1 100644
--- a/components/gcm_driver/DEPS
+++ b/components/gcm_driver/DEPS
@@ -1,4 +1,5 @@
 include_rules = [
+  "+components/crx_file/id_util.h",
   "+components/os_crypt",
   "+components/keyed_service",
   "+components/pref_registry",
@@ -8,8 +9,7 @@
   "+components/sync/protocol",
   "+components/timers",  # Only used for Chrome OS builds.
   "+components/version_info",
-  # TODO(johnme): Fix this layering violation.
-  "!content/public/android/java",
+  "+content/public/android/java",
   "+google_apis/gaia",
   "+google_apis/gcm",
   "+jni",