GeneralDataStream: introduce pimpl class

Moved private methods & data of GeneralDataStream to a pimpl class.
GeneralDataStream is not at end if data available
GeneralDataStream can seek to previous byte
GeneralDataStream doesn't seek beyond start of content