separated json methods into a separate module to unify the JSON handling
added an exception if the notification payload exceeds the limit
added some argument checking to truncate (raises exceptions for bad arguments)
improved handling of the truncate method for unicode strings, and fixed cases when the string would be completely, or almost completely truncated
added some spec test-cases to test the truncate handling, in particular soft/hard truncation, unicode strings, and edge cases
added some spec test-cases to test the notification packing (migrated from the old notification_spec.rb)
JSON encoding now uses UTF-8 for reduced overhead.

• Apple's APNS service does support UTF-8, the wrong length method was being used when crafting the packet which caused such messages to fail previously (ported fix from https://github.com/jpoz/APNS/commit/280e444aa8fb4b5d37e4613ed96818ee21ef200d)
• Test cases update to match reduced-overhead byte sizes, and UTF-8 return values
• .bytesize replaces .length when the byte-length is needed