Split {solvers|preconditioner}.hh to seperate interface from implementation.

The last commits caused compile errors for e.g. clang as I used
incomplete (only forward declared) types in template classes.
This patch moves the definition of InverseOperator and Preconditioners
from the headers solvers.hh and preconditioners into new separate
headers solver.hh and preconditioner.hh. This allows to include these
definitions in the previous headers without cause circular include directives.