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}
47 files changed