Tidy: Move EquationSystem::EvaluateFunction and Forcing::EvaluateFunction into separate class
this MR tries to unify the two EvaluateFunction() implementations in Forcing and EquationSystem by moving them into a separate SessionFunction class which supports proper caching of the evaluated fields (has to be enabled in the contructor). My earlier caching implementation was a bit hacky and cached everything read from files (including i.e. InitialConditions). This one uses caching only when requested.
The Mappings library still has its own EvaluateFunction Implementation, but while the dependency graph would allow moving the SessionFunction to GlobalMappings, i dont think it makes sense having it there and prefer leaving it the way it is.