Deal with reading a buffer less than what was allocated.

With this fix, file_long_read now passes.
Actually, it needs a more substantial fix: the `if (out_sz < more_bytes)` following this block will catch any negative numbers, but that's also wrong: `out_sz` is really unsigned and so the `out_sz < more_bytes` should be an unsigned comparison.  The protocol for `read` is to return a number between -1 and `more_bytes`, and `more_bytes` is an `mp_uint_t`.

I would like to change the stream protocol type signature to us `mp_uint_t` for the return values of `read` and `write`, and define a constant for errors such as `#define MP_STREAM_ERROR ((mp_uint_t)-1)`.