ENH: GIO handling of extra space for CRC

Don't clobber contents when GIO uses extra space in the
input/output buffers for CRC.
ENH: Add EntireHeader ivar to store the header

Added EntireHeader ivar to store the raw bytes of the
entire GenericIO header which includes the GlobalHeader,
VariableHeader(s) and RankHeader(s). This is primarily done
to facilitate checking of the checksum which is computed for
the entire header as opposed to individual pieces.
ENH: Move MPI communicator to GenericIOReader
ENH: Read entire header into bytes & distribute

Changed reader s.t. the entire header, including the
GlobalHeader, VariableHeader(s) and RankHeader(s),
are read in to a raw bytes buffer and distributed
in memory.