Provide a switch construct for the coffee AST.

This is required to enable coffee to do optimise facet integral kernels.
Temporarily switch petsc4py onto the dham branch
It would help if I could spell my own name
with the correct branch
return petsc4py to usual source
Merge pull request #398 from OP2/ast_switch_construct

Provide a switch construct for the coffee AST.
COFFEE: change creation of directories (MPI safe)
Python 2.6 compatibility for OrderedDict
Update .gitignore
Only print summary / cache sizes on rank 0 on exit
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.
COFFEE: remove duplicates from transformed code
COFFEE: move loop merger in a separate class
COFFEE: Reword some methods, improve comments
COFFEE: Refactor split code
COFFEE: Major code refactoring
COFFEE: overhaul the symbolic executor system
COFFEE: split doable within the same loop nest
COFFEE: move merge_ranges in a separate methodn
COFFEE: Rewrite expressions only if expressions are present