Explicitly construct the ScalarProduct, and SequentialInformation.

This patch refactors the calls to the dune-istl solvers.
The SeqScalarProduct, and SequentialInformation is now explicitly
constructed and later used to construct the smoothers
generically. Aditionally the linear operator (MatrixAdapter) is
constructed before calling the various solver dependent solve
routines.

While this does not change the behaviour of the code it is a
preparatory step to support parallel solvers. These parallel
solvers only differ in the type of the scalarproduct and
linear operator used from the sequential ones.
Added support for the parallel solvers of dune-istl.

To support this the solveSystem methods of the LinearSolverInterface gets
an optional additional template parameter of type boost::any. It can hold any
copy constructable object. In our case it is used to pass the information about
the parallelization into the solvers of dune-istl without the compiler needing to know
their type. Inside of LinearSolverIstl::solveSystem we check whether the type stored inside of
boost::any is the new ParallelIstlInformation. If this is the case we extract the information
and use the parallel solvers if available, otherwise we solve serial/sequential.

The new ParallelIstlInformation is needed as the OwnerOverlapCopyCommunication is not copy
constructable. This is indeed a design flaw that should and will fixed upstream, but for the
time being we need ParallelIstlInformation to transfer the ParallelIndexSet and RemoteIndices
objects.
Moved ISTL right and left hand side construction for ISTL to solveSystem

cherry-picked from add-scalarproduct and ported.
[cmake] Export HAVE_DUNE_ISTL for other modules.

This is e.g. needed in the parallel version of autodiff to
test whether ISTL is there.
Removed superfluous export of HAVE_DUNE_ISTL.

With the last patch HAVE_DUNE_ISTL will already be
defined in config.h
Throw an error when using a sequential solver in parallel
[bugfix] Use the size of the vector for the copying.

The last patch did not compile as there was no size member
in scope. Therefore this patch resorts to using the size of
the vector.
Hack to set compi for producer.
compi is set to [0 1 0] for all producers
Merge remote-tracking branch 'upstream/master' into parallel-solver-support

Removed conflicts in:
	opm/core/linalg/LinearSolverIstl.cpp
Fix matrix size and symmetry for parallel runs.
Merge remote-tracking branch 'totto82/add_compi_producers' into add_compi_producers
New parser; proper handling of ENPTVD/ENKRVD.
Use preferred phase of producer well to set comp_fraction.

This replaces the previous hack, that set comp_fraction to (0,1,0) always.
Changed documentation of Wells::comp_frac to match reality.
Merge pull request #564 from atgeirr/add_compi_producers

Add Wells::comp_frac for producers
Exclude "test_parallel_linearsolver" from non-MPI builds

The "sources_hook" runs after "OpmFiles" in "OpmLibMain".
Therefore, we must search the "tests_SOURCES" to exclude particular
tests from the build.

This fixes a build problem in the non-MPI case.
Explicitly group conditions

For some reason I was unable to produce correct criteria without
inserting explicit parentheses.  I don't know why that is, but
better safe than sorry.
Search for MPI support

The build system depends on knowing if MPI is available.  Explicitly
search for MPI to honour that requirement.  Don't rely on ISTL's
transitive searching for the same.
Don't reference OwnerOverlap* unless MPI is available

The class OwnerOverlapCopyCommunication is not defined unless MPI is
avilable.  Therefore, we cannot reference the type unless we know
that MPI is available in the current translation unit.
Merge pull request #1 from bska/no-mpi

Fix build issues in !HAVE_MPI case