bpo-25083: Python can sometimes create incorrect .pyc files (GH-8449)

Python 2 never checked for I/O error when reading .py files and
thus could mistake an I/O error for EOF and create incorrect .pyc
files.
This adds an check for this and aborts on an error.
4 files changed