Deal with reading a buffer less than what was allocated.

With this fix, file_long_read now passes.
> The fact that read returns mp_int_t is what's halving the size.

Yes, as I mentioned before, proper solution would be indeed to make it return mp_uint_t, I'll go for that.

> declared to return ssize_t which is guaranteed to represent values in the range [-1, SSIZE_MAX]

But we know, in 2's complement machines, there's no such type. Well, actually, in machines (CPUs) there's not even signed and unsigned types, type of a value is subject of interpretation in a concrete point of a program, and interpretation may vary from point to point. C, being close to hardware, also must, and does support working in that way, but of course discourages taking that as everywhere practice by the need of casts.

> I also have a feeling that any python program (even one using CPython) that tries to use a buffer that would overflow an mp_int_t won't run for very long anyways.

So, are you concerned with "overflowing int", or with being able to read more than half of address space size at once? My concern is the latter. And there're different address spaced, for example, 16-bit one is merely a 64K, and randomly not being able to read 40K is a bad thing.