Effectively split up simulator and simulation context.

This feature separates the simulator from the simulation context that can be distributed to other components to get relevant hooks, such as the event bus. This makes dependency management easier.
The added complexity is not yet warranted due to the limited size of the project but consider merging this branch when the software and number of context modules increases in order to promote cohesion within simulation package.