Deal with reading a buffer less than what was allocated.

With this fix, file_long_read now passes.
ok - playing devils advocate here.

The fact that read returns mp_int_t is what's halving the size.

If you're going to play posix quibbling then you should be using posix types. read is declared to return ssize_t which is guaranteed to represent values in the range [-1, SSIZE_MAX]

And interestingly enough, on both my 32 and 64 bit machines SSIZE_MAX is defined to be LONG_MAX (which halves the size anyways).

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. As far as I'm concerned anybody allocating buffers that large doesn't know what they're doing (or doing something very very specialized).