RF: refactor mmap logic in array_from_file

Use test for compressed files so we don't mmap them.  Numpy was trying
to mmap bz2 files.

Following suggestion from Nathaniel, use `readinto` method of most
file-like objects to read data into given memory location, so we can be
sure that memory location is not used by some other object.

If we can't use `readinto`, use heuristic to guess whether we can re-use
memory from file bytes read for array memory store.

Use bytearray to read data into, to avoid complications with numpy
array.data buffers and Python 3 / "non-native" datatypes.