Unblock indices for vector field l2g map by hand

Since PETSc has removed the ability to unblock an l2g map, just do it
ourselves using a numpy splat.
Re-structure the expression expander, track decls
Split exprs fully if no info on the length. Simplify code.
Licm optimization now supports multiple levels
Implement precomputation of constant terms
Implement translation into BLAS calls
Implement support for Eigen library
Minor fixes, improve comments
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
Track optimizations properly
Pass buffer name properly to addto_scalar
Fix subtle bug when padding arrays
Autotuner requires explicit setting of unroll optimization
Implement loop permutation and transposition of storage layout