core: SimulatorAdapter to simplify customizations on top of SimulatorImpl
VisualSimulatorImpl and, to some extent, RealtimeSimulatorImpl, both use the PIMPL design pattern to forward most of the work to an underlying SimulatorImpl. The new clock module does the same.
This MR implements a SimulatorAdapter to streamline that design.
To use, inherit from SimulatorAdapter, then implement just the pieces of the full SimulatorImpl API which you need to customize.