Initial checking of GCM for Chrome JavaScript API

Contains gcm.json and updates to relevant files defining the APIs, stub implementation for the functions, updates to GYP file.

BUG=316683

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@236615 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 236615
Support multiple sessions in MediaDrmBridge.

Implementation Notes:
- A media crypto session (mMediaCryptoSessionId) is opened after MediaDrm
  is created. This session will be added to mSessionIds.
  a) In multiple session mode,  this session will only be used to create
     the MediaCrypto object and it's associated mime type is always null.
  b) In single session mode, this session will be used to create the
     MediaCrypto object and will be used to call getKeyRequest() and
     manage all keys.
- Each generateKeyRequest() call creates a new session. All sessions are
  managed in mSessionIds.
- Whenever NotProvisionedException is thrown, we will clean up the
  current state and start the provisioning process.
- When provisioning is finished, we will try to resume suspended
  operations:
  a) Create the media crypto session if it's not created.
  b) Finish generateKeyRequest() if previous generateKeyRequest() was
     interrupted by a NotProvisionedException.
- Whenever an unexpected error occurred, we'll call release() to release
  all resources and clear all states. In that case all calls to this
  object will be no-op. All public APIs and callbacks should check
  mMediaBridge to make sure release() hasn't been called. Also, we call
  release() immediately after the error happens (e.g. after mMediaDrm)
  calls. Indirect calls should not call release() again to avoid
  duplication (even though it doesn't hurt to call release() twice).

BUG=303266,308615
TEST=Test page that uses two sessions work on N7 v2.

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@236616 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 236616