Allow using the unlumped mass in the Schur complement substitution

Added support for using the full, unlumped velocity mass matrix in the substitution operations of the Schur complement, i.e. the lumped mass is only used in the Helmholtz pressure solve. if this is not set, then the lumped mass from the operator is used.
Allow choice of different velocity mass matrices in different parts of the algorithm

Different velocity mass matrices can be chosen in different parts of the code:

(1) the velocity mass matrix used for the calculation of the RHS and back substitution in the Schur complement solve
(2) the velocity mass matrix used in the Helmholtz operator in pressure space
(3) the velocity mass matrix used to construct the diagonal of the Jacobi smoother, this always has to be a lumped mass matrix since we assemble it explicitly

Although using the full matrix in the operator and Schur-complement back substitution leads to slower time per iteration, it potentially improves the convergence of the outer, mixed iteration significantly since we are not using a preconditioner which is based on a 'wrong' mass matrix and hence differs from the full mixed operator.

* In lumpedmass.py, I introduced a separate class which represents a full mass matrix (i.e. without lumping), the inversion of this mass matrix requires a linear solve. I then removed the ignore_mass_lumping options from the lumped mass matrices.
* Added a lumped mass matrix hierarchy class, since we also need to be able to specify the lumped mass matrix for the coarser operators explicitly now.
* Renamed RT1 -> RT0 everywhere in the code for consistency.
* A velocity mass matrix has to be passed explicitly to the Operator class.
* Replaced lumped_mass -> velocity_mass_matrix where appropriate
Generic hierarchy container

This class provides a generic container for creating and storing classes of any type over a hierarchy of objects (e.g. function spaces, operators etc.) and common parameters. It replaces OperatorHierarchy, LumpedMassHierarchy and SmootherHierarchy
Remove LoopSolver and CGSolver to simplify code base

These solvers are no longer needed as the PETSc solver provides the same functionality. Removed them to simplify the code base.
Import no longer needed.

The counter module was used previously for constructing the lumped BDFM1 mass matrix in numpy. This has now been replaced by explicit op2.parloops, so module import no longer needed.
Remove kinetic energy test for full mass matrix

This test does not really tell us that much since we are using the full mass matrix.
Tidying up of documentation and formatting.
Improved output and setting of parameters.

* Added a mpi_utils.py module which provides a logger class; this class only prints output on the master processor.
* Parameters are set via parameter classes.
* Print name of KSP's for mixed- and pressure- solver