Allow build tree of SuiteSparse to be used as root

With this changeset, the build tree of SuiteSparse can be used as the
root; the package does not have to be installed.
Merge pull request #348 from rolk/348_ssroot

Allow build tree of SuiteSparse to be used as root
Test ERT for a newer API level

We use an ERT version which needs to know whether at least this
function signature exists. The earlier implementation covers too
many versions.
Merge pull request #349 from rolk/349_ertver

Test ERT for a newer API level
Noarch lib-dir was only used in one wrong place

dune.module does not contain any paths to architecture-specific
binaries. It is therefore always installed in no-arch lib/ directory.
Thus, there is no need to have a variable for this, and there was
no other users of this variable either.
Always search for dune.module in no-arch lib-dir

The previous version may have ended up in lib64/ instead of lib/;
now we remove the arch-specific suffix from the path, and always
use the no-arch version.
Special handling for some recognized env. vars.

CMake does not like that you specify the compiler with the environment
variables, instead preferring that you set them as cache variables.
This layer translate between the names of the the two.
Print version number in log together with location
Mimic Autotools way to specify non-standard Boost

If Boost is installed in say /usr/include/boost141 and
/usr/lib64/boost141, then there is no root you can specify to pick
them both up. However, whereas Autotools uses --with-boost and
--with-boost-libdir, FindBoost in CMake changes to using two different
variables: BOOST_INCLUDEDIR and BOOST_LIBRARYDIR. Using the header
directory for BOOST_ROOT will not work (in particularily not with
old CMake versions).
Merge pull request #350 from rolk/350_dunemod

Dune.module is searched for in the wrong directory
Merge pull request #351 from rolk/351_cxx

Alternate compiler cannot be set with environment variables
Provide protocol for exchanging state with client

The state that is passed to the simulator object is directly
accessible without any encapsulation towards the client. After
the notification callback was introduced, this allows the client
to observe the state in the middle of a simulation.

However, it may be that the simulator has some internal state
which is not reflected in the state object because there is a
cost associated by flushing it into the TwophaseState format.

The notification is called back on every timestep, not just the
ones that will do reporting. It may even be that reporting is
done dynamically and is not known at the time of setup. (It is
more like a condition variable).

Consequently, flushing the state in every timestep is a bad
idea. This patch sets up a new method sync() which it is expected
that the notification will call if it needs the state for
reporting purposes.

Currently it is a no-op. It just establishes a protocol that
other, compatible implementations can also use.
Merge pull request #331 from rolk/331_sync

Provide protocol for exchanging state with client
Merge branch 'master' of github.com:qilicun/opm-core