extend wire protocol

These changes add a new frame to the Flux "standard message" that carries
* A magic value
* The type of the message
* Flags (set for presence of topic frame, payload frame)
* Requests: a destination nodeid (or FLUX_NODEID_ANY)
* Responses: errno value
* Events: sequence number

This allows the following improvements:
* Tighten error handling in message routines and add unit tests
* Topic string match can occur without a malloc/free
* Eliminate extra type frame sent over snoop socket
* Eliminate type value sent over API unix domain socket
* No special code for requests to a particular rank
* Minimize the size of messages
* Minimal keepalive messages
* Detect lost/dup events (groundwork for recovery in issue #38)