sw_id: replace Client_id.t with switchId in OF0x01

The OpenFlow0x0{1,4} implementations made a distinction between the
client_id used by the underlying Typed_tcp instance to keep track of
connections, and the switch_id (or datapath) corresponding to the
connection. This was for the purposes of making the implementations more
modular. If a user wanted to create a controller that would parse
OpenFlow 1.0 messages but did not actually implement the feature
request/reply part of the protocol, the user could do so.

Supporting this functionality is more trouble than its worth. The
Chunk-based implementation will continue to use client_ids to identify
switch connections, but versioned OpenFlow implementations will use the
switch_id (or datapath) to identify connections instead. Necessarily,
then, these implementations will gather switch features before notifying
the client code that a connection with a switch has been established.
sw_id: get features for OpenFlow0x04.Controller

The OpenFlow0x04.Controller is now at feature parity with 0x01 and is
capable of using switch_ids to identify connections.
sw_id: handle 0x04 multipart reply for port descriptions
txn: add support for RPC-like messages to Chunk controller
txn: Add support for RPC-like messages to OF0x01 controller
txn: Add support for RPC-like messages to OF0x04 controller