Import new io code (from https://proxy.subversion.ucar.edu/cism_MODELS/branches/LTR-para/MFLFM/common/src/io at revision r2209).
Build system update: Remove Make.  Use CMake.
Bug fix: namespace "std" is undefined before the standard includes!
Informing CMake of header dependencies
Fixes to build io code:
* Negate preprocessor defines:
** Rather than "#ifndef NOPP", it should be "#ifdef BUILD_WITH_APP"
** Rather than "#ifdnef NOMPI", it should be "#ifdef BUILD_WITH_MPI"
* Bug fix: a couple of MPI commands slipped through the preprocessor resulting in compile-time errors when built serially with g++
Updates to build system:
* Use CMake "find_package" command to setup Hdf5 and PHdf5.
* Fixes bug with Hdf5 without BUILD_WITH_MPI preprocessor flag
* PHdf5 has its own preprocessor check (HAS_PHDF5).
Adding unit tests under the cxxTest framework.
Update build system to leverage CMake to automate discovery of Hdf4 & Hdf5 locations.
Holy obnoxious conventions, Batman!  Before this commit, open("filename") will actually open a file named "filename.ext" behind-the-scenes.  This was probably done for simplify reading/writing multi-part files (named filename_0.ext, filename_1.ext, etc)... but the right way to do that is probably have filename.ext which denotes it's a multi-part file with attributes to the various parts.
Improved error handling:  Print the line the generated an error.  Also pass const point pointer to const data for functions which shouldn't muck with anything.
Error handling improvements
Revert "Error handling improvements"

This reverts commit 527ec4404a2a7c9a03ad90dc331d18d0e1658fa3.
Revert "Improved error handling:  Print the line the generated an error.  Also pass const point pointer to const data for functions which shouldn't muck with anything."

This reverts commit b5eb7f7ba2f5fa9f0827d30e4a66183b784fe03a.
Io Cleanup: document abstract base class declaration in Io.hpp.  Lightweight refactoring/renaming.  All tests in testNoppNompi pass.
Adding simple error stack to keep track of errors.
We actually want the error printer to work like a queue, not a stack.
s/stack/queue/g
Improve error handling for Io::readAttribute methods.

Here are some long, drawn out notes:
* Changed arguments in readAttribute.  Careful reintegrating to existing codes!
* Don't exit(-1) or MPI_Abort on error!
* errorQueue keeps track of error messages.
* It's now easy to do the dangerous thing of reading an attribute array of length n into a scalar without really seeing an error.
* Swapped order of parameters from (storage, variableName) to (variableName, storage) for attribute methods.  While I get the first option (reiminiscent of "variable=value" assignment), I prefer readAttribute(variableName, storage, ...) along with grouping all arguments relevant to stroage (ie. dataLength) after.  I think the second option shows intent better:  read "variableName" from the file.
Add error checking for writeAttribute
Intent-driven naming: variable => [ variableName || attributeName ]