Prevent early and invalid simulation exits.
Handle simulation exits better.
Handle timers differently in simulation mode.

This commit forces the timers to operate correctly under simulation
mode and fixes SMP/SMT simulation as well as context switching under
single-core configurations.
Commit some changes applied in old 'qemu' branch.

These last-minute changes seem to restore the ability to enter and
exit simulation without issue and were applied or based on the prior
'qemu' (1.2) branch.