We are now thread-safe! (And backwards compatible)

Going to summarize the last few changes here. Unfortunantly I have been
tracking the changes in a git repository that is using the plugin rather
than in the correct repository like I should have been. These are going
from the most recent changes I made to the most distant.

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!