Currently if code tries to do a os.read larger than the max bytes object
length, the size to read gets capped to `_PY_READ_MAX`, then the code
tries to allocate a PyBytes which fails with an OverflowError as the
size is larger than the max py bytes object.
Since os.read is capping the max size anyways, cap it to a size which is
always allocatable as a PyBytes.
This changes behavior from bpo-21932 and enables the large file os.read
test on 32 bit platforms, as it should cap the read to a platform
acceptable size.