Under Windows, for channels opened in text mode, EOL conversion causes
a mismatch between the `offset` position cached in the
`struct channel` record and actual position in the file.
This commit turns off the use of the cached "offset" in the implementations
of `{in,out}_channel_length` and `seek_in`, calling `lseek` directly instead.
To support this, a new channel flag `CHANNEL_TEXT_MODE` was added. It
is set for channels operating in text mode under Windows, when EOL
conversion is active.
Fixes: #9868