Addition of Safari Push for Websites

This starts the addition of Safari Push.

I've changed the iOSVariant to be now called APNsVariant

There are still some things that need to be done, such as making sure all references to iOS in the javadocs are changed to APNs

Probably some tests to add

on the UI front,  the example implementation needs to update to include a safari version

setup can be a bit of a pain, check here for more info, http://blog.lholmquist.org/safari-push-notifications/


so anyone who wants to test,  GO FOR IT
"alert" for safari is actually a dictionary(or object,  apple why you be so fancy),

    {
        "aps": {
            "alert": {
                "title": "Flight A998 Now Boarding",
                "body": "Boarding has begun for Flight A998.",
                "action": "View"
            },
            "url-args": ["boarding", "A998"]
        }
    }

I'm sure you can guess what title and body are.

action here is the button you press,  defaults to show. 

and to answer that previous question,  "url-args":

'The url-args key specifies an array of values that are paired with the placeholders inside the urlFormatString value of your website.json file. The url-args key must be included. The number of elements in the array must match the number of placeholders in the urlFormatString value and the order of the placeholders in the URL format string determines the order of the values supplied by the url-args array. The number of placeholders may be zero, in which case the array should be empty. However, it is common practice to always include at least one argument so that the user is directed to a web page specific to the notification received.'