libflux: flux_msg_encode requires topic string

It is OK to return EINVAL when encoding a message with
no topic string, since only keepalives can exist without one,
and we are using the new API to create those.

Update tests accordingly and tighten up errno checking.
libflux: new message API should not handle json

Remove flux_msg_set_payload_json() and flux_msg_get_payload_json().
Add a flags argument to flux_msg_set_payload(), allowing the
FLUX_MSGFLAG_JSON flag to be set.

Change legacy message, request functions to call
 json_tokener_parse_ex() / json_object_to_json_string ()
directly.  This saves a malloc compared to util_json_encode/decode.

Don't expose flux_response_matched_recvmsg() publicly as it is only
used internally in request.c.

Update one place in the broker where flux_msg_set_payload_json() was
used.
libutil: drop util_json_encode, util_json_decode

These functions are no longer used.
Merge pull request #114 from garlick/libflux-cleanup

make message code mostly json-agnostic + misc cleanup