Fix lseek, off_t

This makes lseek, off_t follow what C does on most platforms. This
unfortunately means that lseek on Windows is still limited to 2GB files,
since we don't expose the additional lseek64 interface that is required
on that platform.

Android has the same limitation, but I think it is less of an issue
there, due to the file system and storage limits.

I know that Writer is deprecated, but I currently need it, so I fixed lseek
usage there as well, the fix is mostly trivial. But since the interface
is broken (uses i32 for offsets), it is limited to 2GB files as well.