Added GCM maintenance functions.

After each message sent through GCM, Google responds with message IDs
for the multicast message and each individual message sent. Should a
user de-register themselves - by uninstalling the app - their
registration ID used to stay in the database and would produce off
metrics and "NotRegistered" errors in the GCM responses.

This also addresses registration ID updates (e.g. when a user gets a new
device but uses the same Google account, the registration ID tied to
that user is updated and after a certain period of time the old ID will
no longer work), known as canonical IDs, as addressed in Google's GCM
documentation.

Closes #1.