GCM - Handing GCM HTTP Errors

Changed code so all 500 errors throw a GCMServiceUnavailableTransportExcpetion, as according to the docs they should be handled the same way.

*Errors in the 500-599 range (such as 500 or 503) indicate that there wa an internal error in the GCM server while trying to process the request, or that the server is temporarily unavailable (for example, because of timeouts). Sender must retry later, honoring any Retry-Afterheader included in the response. Application servers must implement exponential back-off.Troubleshoot*

https://developer.android.com/google/gcm/http.html