Replace GCMRegistrar with GoogleCloudMessaging

Summary of changes (stolen from one of the commit messages (which I apologize for)):

Implementation of registerInBackground because GCM.register() is
blocking, and it is good practice to do it async. Also, Jelly Bean was
yelling at me for doing it in the main thread.

Usage of SharedPreferences to "remember" the registration id, as per
Google's suggestion. As a big to-do, this should also probably store the
sender id and use that as a comparison.

The biggest part of the entire pull request is that this is an attempted
replacement of GCMRegistrar with the newer GoogleCloudMessaging
interface. This could obviously use improvements throughout the
codebase, but hopefully this takes care of most of the heavy-lifting.

Finally, disclaimer, I'm not an experienced Java developer, and this was
my first fling with Android development. Most of what I did I learned on
the spot, so please go easy!