[GCM] Remove all persisted data and close connections when signing out of a profile

When a profile is being signed out, we need to:
1) Close all the requests and connections.
2) Delete the GCM store.
3) Delete the persisted registration info (sender IDs and
   registration ID) from the app's state store.
4) Delete the persisted data from prefs store

To support 3, we need to remember the IDs of all registered
apps. As the result, I added the code to write the IDs of
all registered apps to the prefs store.

Also due to this change, we do not need to listen to 
NOTIFICATION_EXTENSION_LOADED and load the registration info
when the app is loaded because we will restore all the app
IDs and then read all the registration info when GCMProfileService
starts. This also makes us support other types of apps.

BUG=284553
TEST=new tests added

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

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