Better emulate system read() and fread() functions, fixes #15490

libass use test fread() with null pointer and zero count to check for readable file.
I fixed CFile, Win32File and PosixFile to accept null buffer pointer with zero size.
Last commit allow to really call of system file API instead of blindly returning zero for zero size reading.