RF: new class for wrapstruct with labels

Refactor adding labels for codes into new wrapstruct class, and adapt
tests.

Allow fields with codes to pass gracefully with 'unknown' when the value
in the encoded field is not in the lookup table.
TST: add regression test for ECAT data read

Record values from ECAT read in nibabel 1.3.0 and test for regression.
TST: test mlist unchanged since nibabel-1.3.0

Record example image mlist to check for regressions.
RF: use WrapStruct and tests for Ecat main header

Inherit from WrapStruct, remove duplicate code, use generic WrapStruct
tests.

Wrapstruct does not by default force the returned results of __getitem__
to be scalar.  We therefore have to force the scaling factors from the
header to be scalars to allow the scalefactors to upcast the data array
to floating point.
RF: trying to understand mlist algorithm

Rewriting mlist algorithm in an attempt to understand it.  Now I've
failed I will need some help.
RF: refactor ECAT methods into functions

Seeing whether I understand the algorithm.

Aiming towards the ability to base an image on a single subheader.
Merge pull request #186 from matthew-brett/ecat-refactor

MRG: thinking about ECAT

* Refactor ecat to use WrapStruct class; use WrapStruct tests
* Add regression test to compare data read against last released version of nibabel
* Refactor ecat methods into functions for easier testing.
* Explain header / subheader algorithms in docstrings.