Bugfix: DiscreteEventSimulator would leave a running thread if shutdown() was explicitly called to terminate the simulation

Now the thread is not started until start() is called, and is killed when shutdown() is called