Highly configurable simulation base classes in C++ that form a robust framework for creating special purpose simulators