Extruded set

This is not quite ready (some tests still fail I think).  However, it's more of a request for design review.  I add an ExtrudedSet object that takes as constructor arguments a Set and a number of layers.  A par loop iterating over the extruded set is allowed to access indirect dats for which the iteration set of the map is the base set.  These arguments are just don't have an offset applied to them.

Direct loops won't work like this, because in that case we don't have a layers loop in the generated code.

Equally, iteration over the base set accessing extruded dats won't work because the layers code generation is too tied up in having an extruded iteration set.