`Update.Version` should be an `int64`.
Add a `TestClient` implementation for smoke tests.
Client: Add `DialOrigin`.
Add `Conn.Subscribe()` and `ClientPing`.
Refactor `Conn.Send()`.

* Define `Request.{CanReply, Sync}()`. `CanReply()` specifies whether
  request replies should be tracked; `Sync()` ensures that only one
  request of a given type is outstanding.
* Define `Reply.{HasRequest, Sync, CanSpool}()`. `HasRequest()` and
  `Sync()` complement `Request.{CanReply, Sync}()`; `CanSpool()`
  specifies whether replies should be spooled until the consumer is
  ready.
* Implement `PacketType.MarshalText()`. `json.Marshal()` will call this
  method when serializing structures.