Remove extruded bcs code

The bcs should be applied to a Map, rather than the iteration space.
Rework SparsityMap to DecoratedMap

To apply implicit (extruded top and bottom boundary conditions) to Maps,
we need to record whether such a bc should be applied to the current
Map.  We can't modify the Map itself, since it may need to be used in
unmodified form.  Instead, rework the SparsityMap object to a more
general DecoratedMap that allows us to attach arbitrary data to a Map,
and use it to store both the iteration_region of a Map (for building
sparsities) and any implicit boundary conditions that may need to be
applied.
Reimplement top and bottom bcs for Mat assembly in extruded

Now that the Maps themselves keep track of whether any implicit boundary
conditions are to be applied, we can add back the code generation that
places negative values in the maps and do so on a map-by-map basis.
This means that we only apply bcs to the relevant part of a MixedMap.
Merge pull request #386 from OP2/ext-mixed-bcs

* ext-mixed-bcs:
  Reimplement top and bottom bcs for Mat assembly in extruded
  Rework SparsityMap to DecoratedMap
  Remove extruded bcs code
Bump version to 0.11.0
Add support for "local" par_loops

If we pass the flag only_local=True to a par_loop it will only compute
over owned set entities (even in the case of indirect loops).  Once the
computation has finished, Dats accessed via INC perform a halo exchange
to /gather/ remote increments into their local data.

Such loops only make sense if none of the Args are Mats and if Dats are
only ever accessed as either INC or READ, errors are raised in other
cases.
Set: maintain sizes as a single tuple

Rather than having a different slot for each of core, non_core, exec and
non-exec Set sizes, just use the tuple we were passed in and index
appropriately in the public properties.
Introduce new LocalSet type

A LocalSet wraps a Set and indicates that iteration should only occur
over owned set elements.  A par_loop iterating over such a set carries
out a reverse halo exchange at the end of computation to ensure that all
INC Args are up to date.
Allow par_loops on LocalSets to have WRITE Args

The user guarantees that the write from either "side" would have been
identical anyway, so we can assume that the local write was complete and
correct, and there's no need to force a halo exchange.