HTTP Generic Realtime Intermediary Protocol (GRIP)
--------------------------------------------------

Instructions may be sent in response to requests from a GRIP proxy:

Content-Type: application/grip-instruct

{
  "hold": {
    "mode": "response" or "stream",
    "channels": [
      {
        "name": str,
        "prev-id": str
      },
      ...
    ]
  }
  "response": {
    "code": int,
    "status": str,
    "headers": {
      name: str,
      ...
    },
    "body": str,
    "body-bin": base64 str
  }
}


Control service:

A GRIP proxy may be controlled via the Extensible Pubsub Control Protocol
(EPCP). GRIP requires support for the publish endpoint, which is used to
send items over HTTP connections that have been bound to channels.

GRIP defines two item formats, http-response and http-stream:

  "http-response": {
    "code": int,
    "status", str,
    "headers": {
      name: str,
      ...
    },
    "body": str,
    "body-bin": base64 str
  }

  "http-stream": {
    "content": str,
    "content-bin": base64 str
  }
