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.
Merge pull request #242 from rolk/242_callback

Let external objects observe individual timesteps in a simulation