Replace uses of std::stringstream by std::to_string where appropriate.
Since exceptf<SimulationException> is the most common case, default exceptf<> to it.
Add some missing header includes.
Minor header include path tweaks.
Refactor the configuration sub-system.

Prior to this patch the file 'config.h' (and accompanying
'config.cpp') was becoming quite huge and serving too many
purposes. This patch spreads its functionality into different
modules and provides detailed documentation in comments.