MAINT: Introduced _read_array function

This wrapper function is used everywhere in format.py now to ensure to
correctly the handle the case when fp.read returns fewer bytes than
requested.

Also added a test for the orignal bug, loading an array of size more
than 64K from a zip file.
MAINT: Change test to read random sized chunks

Speeds the test up vs. reading single bytes at a time, and is now
correctly handled when reading the magic string and array header.