This commit adds a mediator class to decouple the CMS emulator from the engines that use it. This allows for easier updating or replacement of the emulator or addition of new emulators. It also enables using the emulator via a callback mechanism.