ENH: Fix PAR/REC support

From https://github.com/nipy/nibabel/pull/227, I have the following targets:

* [x] Detect and correct mis-ordered acquisition (e.g., x, y, t, z).
* [x] Detect and return multiple echoes in dataset.
* [x] Detect and optionally permit missing data (e.g., run too short, doesn't contain full dataset).
* [x] Add file overwrite checks and option to overwrite.
* [x] Correct output if there are multiple data types in same recording with different scale factors (phase contrast vs complex).
* [x] Output DTI b-values and vectors, if recorded.
* [x] Output dwell time.

Note that I added the second point about multiple echoes (wasn't made clear in the original posts).
@matthew-brett, this was done to support writing data that had variable scale factors.

The `raw_data.dtype` is `np.int16` for one of my datasets, which is not good. Does the Nifti format support writing other datatypes, like maybe `np.float32`? I tried outputting without casting (which means `np.float64` after this math), and that definitely did not work. It would be nice not to have to use an integer format, especially for data like this that must be scaled before being saved.

The cleaner alternative here would be to save a multidimensional vector of scale factors, but from looking at the `nifti` code a bit it seems like it expects single scalars.