Allow groups of channels.

In this proof-of-concept, the AppServer should POST a message containing an
endpoint to <push-server-url>/group/add/<group-id> to add the endpoint to the
group identified by the group id.

The group is created under the given group ID (if necessary). There's no
separate "create group" message, so every group is non-empty upon creation.

The server's reply will contain the group endpoint to which the AppServer can
PUT a version to relay to all endpoints in that group, and its HTTP status
indicates whether the request succeeded.

The AppServer can then PUT to the group endpoint returned by the PushServer
whenever it wants to relay a message to all endpoints in that group.

Using a similar message to the above, the AppServer can also remove an endpoint
from a group by replacing "add" with "remove" in the URL. It is then up to the
PushServer to handle groups that become empty as the result of a removal.