Fixes #90 - Added some more error checking for invalid device tokens.

Specifically when a Device object is not successfully initialised it should throw an error and this is caught and raises an error appropriately.
Resend a notification if error occurs during transmission

If the socket is "busy", i.e. hasn't drained, when an error occurs then we prepare the last notification to be resent. This should address issue #100. There's no way to stop the timeouts, but this should make the behaviour more consistent.
Changelog
1.3.6