ENH: Move ReadBlockFileToMap to GenericIOReader
ENH: Move ReadVariableHeader* to GenericIOReader
ENH: Move ReadBlockHeader* to GenericIOReader
ENH: Move ReadHeader to GenericIOReader
ENH: Define Open() as virtual in GenericIOReader

Defined Open() to be a virtual method in the GenericIOReader
base class. Concrete implementations, i.e., GenericIOMPIReader,
implement the functionality for opening the corresponding file
handle.
ENH: Move  OpenAndReadHeader to GenericIOReader

OpenAndReadHeader is no longer a pure abstract method.
Instead, it is implemented in the GenericIOReader base-class
and uses the GenericIO primitives Open,Read that provide
I/O specific implementation.
ENH: Move ReadData and friends to GenericIOReader
ENH: Implement GetNumberOfElements in base class
ENH: Initialization in GenericIOReader constructor
ENH: Properly destroy GenericIOReader
ENH: Added some more asserts and cleanup
ENH: Implementation of Parallel POSIX Reader
ENH: Allow user to specify POSIX I/O or MPI I/O