Adds SparseMatrix interface + CSR implementation.

As introduced in
http://www.opm-project.org/pipermail/opm/2014-October/000664.html and updated
in http://www.opm-project.org/pipermail/opm/2014-November/000671.html, this
patch introduces a solver-agnostic interface for arbitrary sparse matrices.

This introduces (experimental) support for zero-overhead matrix containers,
so we can write solver-agnostic code. Uses plenty of C++ template tricks to
work, but should be type safe. All complexity should be hidden within the
library itself, i.e. the ugliness shouldn't leak to user code.

Includes a reference CSR implementation for expected behaviour. Later dynamic
dispatch can be implemented on top of these containers.

This patch only introduces the interface and the underlying container, and will
NOT work on its own. Other patches will introduces template specializations
suited for use.

Includes some (incomplete) tests, but more coverage and cases is future work.
Adds CSR support for SparseMatrix.

Implements the necessary functions and specializations for Opm::SparseMatrix to
work with Opm::CSR.
Adds Dune support for SparseMatrix.

Implements the necessary specializations and functions to support
Dune::BCRSMatrix based types, i.e. all types that uses BCRSMatrix as their
outer container.

This way, library code can use Opm::SparseMatrix as an alias to the Dune
BCRSMatrix implementation and keep it portable to other linear solver backends
that implements SparseMatrix.