Make PushEvent's data payload binary instead of just a string

This exposes binary data as a Body mixin from the Fetch spec,
as discussed on https://github.com/w3c/push-api/issues/83
There's no reason to have a separate init typedef here (this mostly is used for events) -- the union could be placed in-line.

However, I'd argue that it should be fine to only support USVString as the constructor's parameter for now to avoid complicating this, until we learn that there's actually a need for multiple types. The PushMessageData structure is mostly intended for use by the engine (though it's not unreasonable to expect developers to write tests using them), and I wouldn't want to see people start using it as a generic converter between {Blob, ArrayBuffer, USVString, ...}.