Fixes issue #4488.
Implemented an algorithm that uses a bitmask to detect the gaps between the columns.
The reader buffers the lines used for detection in case the input stream is not seekable.