Replace firedrake.par_loop by op2.par_loop

Replaced the firedrake par_loop's by (direct) op2.par_loop's to ensure that we iterate correctly over the dofs in the lumped mass calculation. Before some dofs were looped over twice, which can be avoided by using a direct loop over the op2 dog set.
Replace op2 par loop by new firedrake par loop.

Following David's changes in direct-parloop branch, all direct op2 loops can be replaced by firedrake loops.
mu_relax not needed in CG solver class

mu_relax is set inside the preconditioner, so no need to have this as a field in the CG solver class.
First steps towards multigrid implementation.

Prepared multigrid implementation be defining hierarchies for the smoother and operator.
Draft multigrid implementation

First attempt at a matrix-free geometric multigrid solver. Slightly changed the class hierarchy: there are now to solvers (LoopSolver() and CG()), which take a preconditioner, this could be the multigrid algorithm or simply a smoother. Code works, but multigrid solver does not converge with the correct rate yet.