Alternate Pem Keys

I needed the ability to use pems other than one sitting locally with the app.  Added the optional `alternate_pem` argument to public methods in APNS to give users the option of sending a different pem with each notification.  

Also did some housekeeping and moved duplicate code into it's own methods.