Refactor TCP protocol parsers and serializers.

* Migrate type helpers to the `common` package. Remove the
  `encoding` package.
* Add common interfaces. `NodeRequest` corresponds to CN API requests,
  `NodeReply` to CN API responses, `ServiceRequest` to Service API
  requests, and `ServiceReply` to Service API responses. `DuplexRequest`
  and `DuplexReply` are implemented by the `{inbr, or}.DeliverRequest`
  and `{inbr, or}.DeliverReply` packets.
* Export `common.ProtocolError.Message`.
* All protocol-related unit tests now pass.
CN: Clarify `{out, in}Chan` usage.

* `ConnRouter` => `nodeRouter`.
* `{clientConn, nodeRouter}.inChan` => `toClient`.
* `{clientConn, nodeRouter}.outChan` => `fromClient`.
* Remove unused `clientConn.ready` field.
CN: Remove `clientConn.closeWithError()`.

Clean up `readUpdate()`.