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