Remove extruded bcs code

The bcs should be applied to a Map, rather than the iteration space.
__init__ comes first, damn it
Merge pull request #390 from OP2/__init___comes_first_Florian_dammit

__init__ comes first, damn it
Ignore decompression error when reading disk cache

Pickled objects cached on disk are gzip compressed. If this archive
is corrupted (because the write was interrupted or otherwise), the
file exists, but attempting to read it fails with a zlib.error
exception. We simply ignore this failure, which is subsequently
handled as if no value had been found in the cache.
README: clarify quick start instructions
Sketch implementation of "python" par_loops

This allows (for Dats and Globals) par_loops to take a python function
as a kernel argument.  Only very lightly tested.
Copy data back out in python par_loop

When we pass a view into the kernel function, the internal indexed
assignment will create a copy which we then need to splat out to the
actual data.
Raise error for further unimplemented case
Remove overcautious exception
Add tests of python par_loop
Fix python par_loops in conjunction with device backends

We need to explicitly manage moving data from the device and updating
its state.
Merge pull request #392 from OP2/py_parloop

* py_parloop:
  Fix python par_loops in conjunction with device backends
  Add tests of python par_loop
  Remove overcautious exception
  Raise error for further unimplemented case
  Copy data back out in python par_loop
  Sketch implementation of "python" par_loops
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
Always mark COFFEE CPU kernels as static inline
Remove unnecessary static inline markers from Kernels

Since COFFEE now always slaps a static inline declaration onto CPU
kernels, there's no need to add them by hand to each Kernel we build.
Merge pull request #393 from OP2/cpu_static-inline

Always mark COFFEE CPU kernels as static inline
Implement an autotuner in COFFEE

The autotuner evaluates the licm, ap, vect, split, and blas
optimizations by running them on a fake mesh (i.e. kernels are invoked a
number of times, but the actual fields are not read from a real mesh).
When licm and split are evaluated, assembly and integration loops are
also unrolled in several ways (this is driven by some heuristics).
Finally, the fastest optimization is picked and proper code is
generated.