pull in all the ADIO optmization code and position it to work again.

the code itself is ByteRangeIndex specific, so we add an API
hook plfs_get_fileinfo() that returns the file's logicalfs type
and index type.  Then we apply the ADIO opts if type is CONTAINER
and index is BYTERANGE.

also remove code for flatten_on_close, as we decided to no longer
support it (old code was a problem due to the way it supported index).

code structure: container provides an external C API for the MPI code
(e.g. functions like container_parindex_read, these are all defined
in container_adio.h).   we receive these calls in container_adio.c.
we then redirect them to public ByteRangeIndex calls (they are static
class functions).  most of these don't touch shared data, so locking
concern is minimal.

the bulk of the ADIO specific code is now in BRI_ADIO.cpp.