Deal with alignment/padding/loop-adjustment properly
Track zero-columns and avoid accessing them at run-time
Record assembly expressions properly
Change the way licm optimizations are enabled
Implement loop merging (plus feasibility checking)
Group statements living in same iteration spaces
Make expansion use deep copy, not pointers
Store numpy format when arrays are block sparse
Autotuner: avoid unrolling when zeros are found
Update dependency graph in case of expansion
Improve intel jit-compilation
COFFEE: check zero removal is not used with vect
Make COFFEE less dependent on PyOP2
Fix autotuner's debugger
COFFEE: Fix nasty zero-tracking bug
COFFEE: change creation of directories (MPI safe)
Python 2.6 compatibility for OrderedDict
Merge pull request #395 from OP2/coffee-trackzeros

More COFFEE features

* The autotuner now does not produce a shared object, rather a "main"
  C file.  This is because apparently "dumping" too many code variants
  in an .so (so generating a big file) induces something in the compiler
  (at least Intel's) which renders the run-times completely unreliable.
  This makes COFFEE less dependent on PyOP2 (it doesn't need the
  compilation module anymore), which is a good thing in perspective.

* COFFEE now performs symbolic execution to restructure iteration
  spaces such that computation over blocks of zero-columns are avoided.

* Precomputed terms induced by loop-invariant code motion can now be
  fused in the same loop (e.g. if test and trial functions come from the
  same iteration space).

* Further minor fixes.