avoid "address already in use" when launching simulator

more robust dispatch of simulator to avoid "address already in use" error while
executing multiple tests, which has been seen in the nightly build: 1) more
controlled termination of the simulator process and 2) bind a newly generated
port at each launch. Also, the disabling of the simulator for the "lost
connection/re-connection case" just uses the existing running simulator process
instead of killing/re-launching a new one (this is simpler and actually required
because a new launched process would be listening on a different port, not the
one already passed in the DRIVER_CONFIG of the various platform agents).