ENH: Improve par-rec support

Goals:

* [x] Detect and correct mis-ordered acquisition (e.g., x, y, t, z).
* [x] Detect and return multiple echoes in dataset.
* [ ] Detect and optionally permit missing data (e.g., run too short, doesn't contain full dataset). Current support is partial, since differing scale-factors will not work with truncated recordings currently.
* [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.

Although it's not 100% complete, it would be good to get a round of review to make sure I'm not way off.
Oh dear - sorry that is true.

I will write something better today and try and push it to master, but
as_analyze_map is a method of a header that takes 'self' as the only
argument (self being the header) and, returns a dict, where the keys are
field names in the nifti or analyze header and the values are the values
for those keys in the analyze header.  So, if you look at - say - the
nifti1.py file header field definitions, you coudl return in the output
dict any named field in that definition.  In the case of the
set_xyzt_units, you would have to go to the nifti1.py source to see what
header fields that sets, and set those with the key, value pairs of the
returned dict.  Is that a little clearer?  I'll post something soom with
better documentation.
​