libflux: add unit tests for message.c
libflux: flux_msg_encode return EINVAL on !tag
libflux: added in-line doc in message.c
libflux: avoid a malloc in flux_msg_match()
libflux: deprecate flux_msg_match_substr()

This call is only used in one place in the api module,
where it is used in the parsing of messages that are
arguably improperly constructed.  Drop from public interface,
work around it in the one place it is used.
api: use local flux_msg_match_substr()
libflux: fix flux_msg_decode unchecked strdup()
libflux: drop internal unwrap_zmsg_rte() helper

Rename internal function unwrap_zmsg() to flux_zmsg_nth().
Drop internal function unwrap_zmsg_rte().
Rework flux_msg_sender() and flux_msg_nexthop() to not use
the above dropped helper
libflux: slight clarity improvement in flux_msg_nth()
broker: use message.c functions

Broker should not hardwire message formats; it should use message.c
like everybody else.
libutil: strike some unnecessary includes
libflux: add a new zframe to standard msg

Currently just a 4 byte sentinel to make sure everything works
as before with the extra frame.
broker: adapt to new message format

Need to subscribe to everything on zs_evin socket in each plugin.
libflux: add get/set message type operations
flux-snoop: accept new standard message format

Stop expecting an extra tag frame and type frame on the snoop socket.
Get the type from the new flux_msg_get_type() accessor, and perform
subscription filtering manually.
broker: use standard message format on snoop socket
broker: set type on outgoing events

Rename cmb_pub_event() to cmb_event_sendmsg().
Add cmb_event_send(), which sets type.
Avoid calling cmb_event_sendmsg() directly, except from cmb_event_send().
broker: refactor snoop_cc, relay_cc

Turn snoop socket into an endpt_t.

Now that snoop_cc() and relay_cc() are identical, create one function,
endpt_cc() that can be used in both cases.

Cleanup: since endpt_create takes printf style args, avoid passing
a non const fmt string.
libflux: set type on request/response messages
libflux: detect malformed messages in handle

In the generic flux_t handle code, return EINVAL in the following
function if the embeddd message type is not set properly:

flux_request_sendmsg()
flux_response_sendmsg()
flux_response_putmsg()

And in the message recieve functions, set the type shown in trace
output from the embedded type, not a hardwired type based on context.