Add repr and str to Subset
Make extruded sets a first class citizen

Rather than build an extruded set by passing a layers argument to the
Set constructor, we now build a Set and then build an ExtrudedSet on top
of it.  This is to facilitate writing a par_loop that iterates over an
extruded set but reads dats defined on the base set.  For example, in
extruding a coordinate field.
Allow iteration over extruded sets to read base set Dats

If we're iterating over an extruded set, reading a Dat defined on the
base set should be allowed (we should just not apply an offset).  Change
argument checking for parallel loops and code generation to allow this.