NIFTy grand unification: unify MultiFields and Fields
all new fields have the internal structure of a MultiField
a classic "standard" field is represented by a new field with a single key
that is the empty string
Many of our operators work on part of a DomainTuple (e.g. FFTOperator).
Typically this is specified by passing the domain and additionally a "spaces"
argument, which is None, int of tupe of ints.
Since in the future every domain is a "multi-domain", this is no longer
sufficient: the partial domain must now contain an additional string defining
the name of the required field component. This requires an update
(and renaming) of "parse_spaces", "infer_space" etc.
Maybe it's good to introduce a new "PartialDomain" class which contains
a string containing the desired field component, and
an integer tuple containing the desired subspaces of that component
"MultiField" will be renamed to "Field"; "Field" will probably be renamed
to some internal helper class or completely implemented within the new "Field".
"MultiDomain" will be renamed to ???; "DomainTuple" will probably become
"_DomainTuple", i.e. it should not be directly accessed by external users.
"makeField" and "makeDomain" become static "make" members of "Field" and
"Domain"