[GCM] Add RMQ storage and MCS message passing support

The RMQ store will contain both the pending outgoing messages as well as the
unacknolwedged incoming message ids. Additionally, the device credentials
are stored there, with the security token encrypted using the local system
encryptor.

In order to support lightweight message passing across threads a MCSMessage
class is introduced.

BUG=284553

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

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