[GCM] Adding retry logic to the Checkin Request

* adding retry logic based on exponential backoff
* adding Status enum to properly inform of the state of CheckinRequest
* adding more tests for retries and error conditions

BUG=284553

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

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