Make PushEvent's data binary instead of just a string

This exposes data as a Body mixin from the Fetch spec,
as discussed on https://github.com/w3c/push-api/issues/83
Define PushMessageData for binary payload, instead of using Body mixin

Anne recommended that the Body mixin should only be used for streams:
https://github.com/w3c/push-api/pull/88#issuecomment-63604983
PushMessageData cleanup

- "Objects implementing PushMessageData gain an associated bytes (a byte
sequence, initially empty)." -> "PushMessageData objects have an associated
bytes", as there are no other objects implementing this.

- Made PushEventInit non-optional and its data member required.

As suggested on https://github.com/w3c/push-api/pull/88#issuecomment-63685522

- Also fixed linkification of PushEvent.data.
Add a constructor for PushMessageData

As suggested on:
https://github.com/w3c/push-api/pull/88#discussion_r20597399
Make PushMessageData non-constructible; instead use PushMessageDataInit

This commit makes PushMessageData a NoInterfaceObject, for the sake of
future web-compat: this means that we could later replace PushMessageData
with some other API-compatible type, such as the generic binary data
converter interface that @annevk moots in
https://github.com/w3c/push-api/pull/88#discussion_r20755983

So that PushEvents can still be constructed, PushEventInit now has a
PushMessageDataInit data member instead of a PushMessageData.
Make PushMessageDataInit only accept USVString for now

A simplification to avoid PushEvent being used purely to convert between
text and binary, as suggested in:
https://github.com/w3c/push-api/pull/88#discussion_r20810493
Address mvano's comments on binary PushMessageData

PushEventInit and it's data member are now optional again:
https://github.com/w3c/push-api/pull/88#discussion_r20867428

Tweaked IDL spec deeplink:
https://github.com/w3c/push-api/pull/88#discussion_r20864592

Tweaked respec linking:
https://github.com/w3c/push-api/pull/88#discussion_r20864731

Clarified JSON.parse exception re-throw:
https://github.com/w3c/push-api/pull/88#discussion_r20864930

Addressed <li><p> nit:
https://github.com/w3c/push-api/pull/88#discussion_r20865058

Defined what happens if data attribute is not set:
https://github.com/w3c/push-api/pull/88#discussion_r20865550
Merge pull request #88 from johnmellor/binarydata

Make PushEvent's data payload binary, with getters for text, json, Blob, and ArrayBuffer.