zmq-broker: Create plugin zloop before call to initFn

Move the creation of the plugin zloop to before initFn for the
plugin is called. This allows plugins to register new zmq_pollitems
and/or timers to the zloop before zloop_start() is called.
zmq-broker: Update api plugin to use zloop interface

This experimental patch updates a user of the plugin pollFn callback
to use the zloop(3) event interface instead. This reduces the redundant
code in apisrv.c, and obviates the need for a pollFn callback in the
plugin interface (but the callback is left in the code.)
zmq-broker: fix memory leak in plugin code

Fix plugin_cb_hook () leaks pingtag, statstag
zmq-broker: apisrv doesn't need ping/stats hook

ping/stats works now to e.g. '0!api' without _recv_request () in
apisrv.c.  Removed.
zmq-broker: re-attach plugin_timeout_* ()

These functions need to calll zloop_timer () functions
to manipulate timer settings.
zmq-broker: drop pollFn callback

This is no longer needed with the zloop reactor changes.
zmq-broker: pull in pmi.h and pmi2.h from mvapich

Replace our pared down pmi.h with the upstream one, with all
the comments documenting interfaces.

Pull in pmi2.h in preparation for implementing those functions.
zmq-broker: rework kvstest to use PMI
zmq-broker: add --n-squared option to kvstest

mvapich2 PMI behavior is for each MPI rank to set some information,
and then to retrieve the information of every other task, resulting
in N puts, and N^2 gets.  Mimic that behavior if given --n-squared option.
zmq-broker: kvstest add --num-keys

Change the number of keys created by each task.
zmq-broker: add hkvs plugin and make PMI use it

This is a new kvs plugin that uses the hierarchical caching model of
the conf plugin.
zmq-broker: fix little typo in conf plugin
zmq-poller: block signals in plugin threads

Avoid getting the cmbd killed with a SIGPIPE when API clients
disconnect.
zmq-broker/apisrv: fix use-after-free of client struct

Need to unwire the zloop_poller in couple other places
where client is destroyed.
zmq-broker: Move some common code to libutil.a

Move some code that will be common between pieces of the CMB
to a libutil.a library in the util/ subdirectory.

Pull in cbuf.[ch] to libutil.
doc/notebook: add hkvs graph and data
zmq-broker: improved error/log functions

Remove static buffers from log.c functions.  This was to avoid
allocating memory in the path that might be reporting oom().
Instead if memory allocation fails, fall back to static buffer
(with possible message truncation).

Improve oom () function to report file, function, and line it was
called from.
zmq-broker: fix missing include dependency

Headers moved into include/ were no longer deps for .o's
zmq-broker: restructure logging to avoid cmb.h includes

Changed logging to use "level" instead of "priority", which is
more in line with syslog terminology), and to use the syslog.h
values for that, as an integer, not our own enum.

This allows various .c files to avoid including cmb.h just to
get the level values.  Instead they should include log.h which
in turn includes <syslog.h>.
zmq-broker: mv util.c, zmq.c, hljson.c to util/

Also rename zmq.[ch] to zmsg.[ch] so the compiler will continue
to find /usr/include/zmq.h.