Initial commit of a functional test client.
Refactor the `Request` interface.

* Remove `replies()` and `errors()` from the interface definition.
* Define `Reply(Reply)`, `Error(error)`, `Close()`, and `Do()` for
  writing and reading replies.
* Merge `Conn.trySend()` and `Conn.WriteRequest()`.
`Conn.Send`: Unblock pending `Helo` requests.

Add a `Ping` packet type.