RF+DOC: small edits for clarity to array_to_file

Comment edits, renaming variables for clarity.
BF+TST: enforce float working types saving arrays

Make sure slope and intercept are floating point precision to make sure
that working array type is float and can therefore prevent integer over
/ underflow.

Expand tests to confirm this and cover all plausible input types.
WIP: use explicit scalefactors for Analyze types

Detect and use specified slope and intercept in Analyze-type images.
NF: add function returning supoorted np types.

Function returns supported numeric numpy types for objects like headers
or images.
TST: test for explicit scaling of scaleable images

Add tests for all data type combinations when scaling is explicit, not
calculated.
NF: add safe allclose testing function

allclose fails for extreme ints because subtraction can cause overflow /
underflow, and abs leaves negatives for the min of an int.
RF: refactor writing tests for complex input

Need some violent refactoring for complex input to array_to_file; begin
by getting the tests ready for complex input.
RF+TST: major refactor of array_to_file

I was getting confused adding complex numbers so time for a rewrite.

The function is still far too long, and often very difficult to
understand.

Add tests for complex scaling and no scaling cases.
DOC: how to run image load save benchmark
DOC+TST: doc and test nan value for array_to_file

The nan2zero step in array_to_file effectively comes before applying the
intercept and slope.  I'd forgotten that, and why - note in docstring
and test.
DOC+RF: document private write function

And change the argument order to follow the order in which the arguments
are applied.
NF: add benchmark for save of image with NaN

Image save is slow with NaNs, benchmark for testing fixes.
TST: more nan thresholding tests, remove duplicate

Add NaN to comprehensive tests of in / out with array_to_file.  Remove
test that has become a subset of the more comprehensive test.  Rename
the comprehensive test to better match what it does.
BF+TST: add error and tests for nasty nan2zero bug

It is possible to make the written range of the data not include the
data that represents the scaled 0 for reconstructing zero from NaNs.

Add some tests, some failing, to confirm or deny this is happening.