Fix race in FileResponse when the file is changed between the stat and open calls
There was a race in ``FileResponse`` where the stat would be incorrect
if the file was changed out between the `stat` and `open` syscalls.
This would lead to various unexpected behaviors such as trying to read
beyond the length of the file or sending a partial file. This problem
is likely to occour when files are being renamed/linked into place.
An example of how this can happen with a system that provides weather
data every 60s:
An external process writes `.weather.txt` at the top of
each minute, and than renames it to `weather.txt`. In this
case `aiohttp` may stat the old `weather.txt`, and than
open the new `weather.txt`, and use the `stat` result from
the original file.
To fix this we now `fstat` the open file on operating systems
where `fstat` is available
fixes #8013