bail when we've added something, and print more info in trace.
topython: give the rank of the MPI process to python.
keep track of timesteps by seeing when a particular file closes.

currently hacked/hardcoded to work with a file specific to Enzo.
py: create the 'freeprocessing.field' variable.
slightly more up to date docs.

... but still woefully behind.  le sigh.
py: add 'field' every time.

seems to not work if we just do it at init... dunno what's up.
also, abort if we hit some of the more nasty errors, no use
continuing anyway.
switch to parsing additional options within field configs.
fix (large!) memory leak writing 3D data.
netz: parse field options.

parse field options in psiphi.cfg.  the two options now are "3D" and
"slice=Z"; "3D" is the old behavior of just writing out the full
3D field.  "slice=Z" is not yet implemented, but is planned to
pull out a specific slice.

also switch up 'byteintersect' to not take a field, but rather the
field's upper && lower boundaries.  these are the only parts of
the field it needed; this makes it more general.
parallel: add a 'barrier' function.
netz: only wait_for_debugger the first time.
netz: fix byteintersect for forgotten 4th case!

the write could be larger than the entire field.  of course, since
they write a brick at a time, this can only happen if the stream
we are interested in is smaller than a brick. ... which is exactly
what happens when we want to write out slices.
netz: write out slice information if requested.

instead of hacking it, like we do in the 3D case, this is The Real
Deal.  We don't copy it to a file first and then pull out what we
need; we actually identify what we need and push it out directly
from the incoming stream.

the implementation feels waaaay too complicated, and thus i'm not
a big fan of it.  I also don't think this will work if there are
multiple bricks in any dimension sans X.

i also converted slicefield[] to an array of descriptors, because
we use lio_listio to submit all the writes in one batch.