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.