Properly set and delete options in PETSc database

Deleting options from the database immediately after setFromOptions
causes some options not to be applied (e.g. fieldsplit options), so
only delete them when the Solver is garbage collected.
Set up fieldsplit IS when using a fieldsplit PC

Using fieldsplit preconditioners would previously fail because the
fieldsplit IS wasn't set up.
Solver: only do fieldsplit IS setup if operator changes
Merge pull request #379 from OP2/solver-fixes

PyOP2 Solver: set up fieldsplit IS, fix options

* Properly set and delete options in PETSc database
* Set up fieldsplit IS when using a fieldsplit PC
Fix host code gen for interior horizontal facet

We need to build a loop of length twice the shape of the iteration
extent, since the map doubling happens implicitly.
Merge pull request #381 from OP2/fix/ext_int_horiz_facet

* fix/ext_int_horiz_facet:
  Fix host code gen for interior horizontal facet
Implement translation into BLAS calls
Implement support for Eigen library
Minor fixes, improve comments
Fix subtle bug when padding arrays
Python 2.6 backward compatible import of OrderedDict
Merge pull request #377 from OP2/coffee-mmm

COFFEE supports dense linear algebra libraries

COFFEE can now transform left-hand side kernels into sequences of calls
to linear algebra libraries' DGEMM. So far, MKL, ATLAS and EIGEN are
supported, and the code can be easily extended to other libraries.
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.
Split now properly update expressions dictionary
Change the way applied optimizations are tracked
Bug fix: buffer properly passed to addto_scalar
Autotuner requires explicit setting of unroll optimization
Implement loop permutation and transposition of storage layout
Avoid aligning buffers which are not multiple of vect length
Avoid adjusting bounds where dangerous