Refactored smoothing code for better reuse.
Added algebraic twolevel method.

With this addition it is possible to construct a twolevel method by
specifying a fine level smoother (e.g. SeqOverlappingSchwarz), a
policy for the grid transfer, and a policy for constructing the
coarse level solver.
Makes KAMG work with refactored code of AMG.
Added test for twolevelmethod with Schwarz smoother.
Activate schwarz and superlu.

Previously setting the define overwrote the flags for superlu.
Fixes bugs in twolevelmethod.

1. do call postsmooth instead of pre smoothing for post smoothing.
2. Prolongate coarse grid correction to correct fine level vector.
3. Changed test to use regular patches and schwarz mod that mimics
   regular smoother for better comparison.
4. Improved documentation.
Improves documentation for test of twolevel method.
[Bugfix] Fixes preparation of fine level system after coarse grid correction.

For the postsmmothing to work we have to reset context.lhs to 0
which still contains the update from the last presmoothing step.
This patch does this.
Activates Schwarz smoother for twolevelschwarztest in Makefile.am.
[Bugfix] Corrects current residual after postsmoothing.

Previously the current residual was not updated after the coarse
grid correction. This patch fixes this by storing the only the
prolongated coarse grid correction in context.lhs and updating the
accumulated update. During postsmoothing the currently residual is
updated according to context.lhs.
Makes shallow copies of twolevel method usable in different threads.

The LevelTransferPolicies have internal storage for lhs and rhs that
should be cloned in each copy to prevent overwriting values. This
patch accomplishes this.
Fixes copying of LevelTransferPolicy and AMGInverseOperator.

Previously copying of TowLevelMethod did not compile. In addition
the coarse solver was not copied as it should. This patch fixes this.
Adds virtual destructor to allow subclasses to sanely deconstruct themselves.
Fixes destructor of AMGInverseOpertor if it was copied and calling of pre and post.
Fixes copying smoothing steps in copy constructor of TwoLevelMethod.
expand twolevelmethodtest by threads
[twolevelmethod][bugfix] Copy coarse level solver for thread safety. (2nd tparam of TwolevelMethod changed!)

Previously all copies of the twolevel method used the same
coarse level solver. In the case of AMG this resulted in wrong
results as it stores internal data across several applications.
This patch now always copies the internal coarse level data.

In addition the left hand side given to AMG as a coarse level solver
is copied to use it for the post method in the constructor.

Note that the meaning of the template parameters of TwolevelMethod is
changed. Its second parameter is now the type of the coarse level
solver rather than the coarse level linear operator. The latter is
deduced from the previous now. This was needed to supportt copying of
the coarse level solver.
[bugfix][twolevelmethod] Removes memory leak.

This patch fixes a memory leak when using AMG as a coarse level solver
for the two level method. As there was no need to store the solver as
a pointer (it was copied anyway), we now simply store it by value.
[cmake] Fixed double definition of add_executable.

This was a left over from  resolving the conflicts from rebasing the
feature/twolevel branch.