testsuite: check for expected exit codes from flux-start

Especially for testing purposes, flux-start exit code should
communicate failures from underlying commands or other session
errors.

Add a couple checks to the basic tests to ensure that flux-start
reports exit code from underlying command and additionally detects
children killed by signals.
flux-start: exit with maximum exit code of children

flux-start currently always exits with 0 status which makes it
impossible to tell if a test run under flux-start actually passed
or failed.

This patch saves the largest return code from all children and
uses that as the exit status for flux-start. (signals are indicated
by the standard 128 + signum). This only applies to "start_direct",
since otherwise flux-start directly execs the launcher (i.e. srun).
Merge pull request #91 from grondo/flux-start-error-handling

flux-start: handle non-zero exit code of children
libutil: move xstrsub to libutil/xzmalloc.c
submodule: flux_modfind() search subdirs

Seach each component of the search path recursively.
submodule: send submodule mgmt requests to modules

flux_insmod ("kvs") request is cmb.insmod.
flux_insmod ("sched.backfill") request is sched.insmod,
flux_insmod ("sched.backfill.priority") request is sched.backfill.insmod.

Similar for flux_rmmod.

flux_lsmod now takes a target argument.
If NULL, request is cmb.lsmod.
If "sched", request is sched.lsmod.
submodule: update flux_lsmod usage in modctl

Set target to NULL pending rework of this module.
submodule: install modules to cmb subdir
submodule: unit tests for flux_modfind()

Also remove a stray debugging fprintf
submodule: add some inline docs to module.h
submodule: shorten flux.conf.in module_path

We no longer need to list every module directory, or hardwire
the .libs libtoolism since we search for modules recursively now.
submodule: drop unnecessary include in module.c
build: wreck should use project install defs

We predefine the flux-core install directories in configure.ac so these
definitions needed not be repeated throughout the project.  Somehow we
missed converting wreck to use these and so wreck did not pick up
the redefinition of fluxmoddir in the 'submodule' patch series.
build: revert addition of cmb to fluxmoddir

Extra directory was added when module names were prefixed with "cmb."
but since that change did not make the final cut, we should revert
this change too.

Trivial to make this change again later, epecially since module loading
code now searches directories recursively, so it doesn't matter to
the loading code where in $fluxmoddir the modules live.
doc: update README.md and add overview section

It seemed like our README.md was a bit sparse.
Merge pull request #92 from garlick/submodule

generalize module loading for submodules
Merge pull request #93 from garlick/install-paths

build + doc: update module install path, update README.md
lua: fix possible crash in iowatcher callback

In iowatcher callback, protect against uninitialized string access.
This could (and did under some circumstances) cause a crash in
the lua handler for IO.
config: set path to wrexecd when running from builddir

For the builddir version of etc/flux/config, set wrexec.wrexecd_path
to the local built wrexecd. This can then be used by wrexec comms
module to find the right wrexecd.
wreck: Use configured path to wrexecd if it exists.

Instead of only relying on #define version of WREXECD_PATH, track
the kvs value 'config.wrexec.wrexecd_path' and use that as the
path to wrexecd if it exists. If the path does not exist, the
fallback to the default (system) location.

The wrexec comms module now installs a watch on this value, so
the path to wrexecd can be set at runtime.