cpu: implement core reset.

Allow the CPU core to be reset through the debug controller, this makes
it more usable for testing on hardware.
tests: leave simulator live through all tests.

Rather than killing and spinning up a new one, use the core reset before
running a new test.
debugger: implement CPU reset.