Make implementation class "package" visible

Since a definition of the class is not in the header, no other
compilation units can safely access the internals of the Impl class
anyway, so it may as well be a regular struct so that the outer class
(SimulatorIncompTwophase) can access it.
Notify callbacks when a timestep has completed

Client code can do additional processing for the output of each
timestep.
Subtract time spend in callbacks from total

Since this is not time spent on the simulation itself, it is "unfair"
that this is accounted on the simulator.
Provide template functions in separate header

Template functions must be defined in the header since the library
cannot contain generic code. To keep only the interface in the main
header, all such function bodies are put in a separate _impl file.
Try singular name if plural not defined

In CMake "canon" (i.e. tutorial on Kitware's website) it is stated that
the _DIR suffix should be used for the directory of the library alone,
whereas _DIRS are entire list of paths necessary to compile (i.e.
dependencies are included).

Eigen3 only uses the singular form (since it doesn't have any
dependencies); it should really be copied to the plural form, but it may
be advantageous to have the find-module included unchanged, so we put in
an extra effort to find it here.
Include possibility that uppercase is used
Merge pull request #243 from rolk/243_single

Try singular name if plural not defined
Merge pull request #242 from rolk/242_callback

Let external objects observe individual timesteps in a simulation
Demote consequence of not having C++11 support

This module sets individual flags for each feature; there is not one
"CXX11Features_FOUND" flags which is set. Thus, when putting the
module as REQUIRED, the only consequence is that we cannot disable
searching for it.

Instead, we make it optional, meaning that the flags won't get set if
it isn't included and the dependent modules will adjust accordingly.
Use boost::bind instead of std::bind to compile with C++03
Merge pull request #246 from rolk/246_bind

Use boost::bind instead of std::bind to compile with C++03