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
Profiling: allow manually adding timings
Configuration: add profiling option

Intended to launch CUDA kernels synchronously.
CUDA: use timed_function for JITModule calls
CUDA: record kernel execution time from driver
Add pass-through for profile from line_profiler
Wrap line profile decorator around par_loop compute
Add separate decorators for line and memory profiling