TST: test fileno method of Openers objects

Check that BytesIO raises UnsupportedOperation, and other types have
non-zero fileno.
TST: tests of ``array_from_file`` with Openers

Test that ``array_from_file`` works correctly with ``Opener`` instances.
BF: add check for bz2 file having fileno

bz2 file does not have fileno in Python 3.2 and 2.7 on travis at least.
NF: test for file-like containing compressed data

Test for gzip / bz2 file object, so we can in due course avoid
memory-mapping these guys in ``array_from_file``.
TST: can we change strings from files?

If we can change strings loaded from files without messing up the result
of a subsequent load, then we can use the string memory as modifiable
memory backing the array returned from `array_from_file`.
TST: add tests for array reread

Check that reading an array, modifying the array, then rereading the
array, returns the same result for both reads.
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.
TST: add test for memory mapping from images

Add tests that unscaled image returns memory map by default.
RF: use == instead of `is` for comparision

From comment by Eric L.
Merge pull request #267 from matthew-brett/master

MRG: expanding, rethinking mmap'ing

Expanding the tests for the bugfix suggested by @MichielCottaar

Work out the previous logic for file mapping broken for a long time by using Openers.