Don't allow cl_hw to go recursive, that way lies madness.
Interrupt sources need to update status bits with write not set so that vcd and r/w breaks can see the changes. In fact, everything (except possibly user console commands) should use writes. That's another reason HW can't be reentrant.
Implement necessary registers, add labels, handle edge/level interrupt switching, direction switching, add tests etc.
(Really needs the VCD improvements from #424 for the tests to work properly!)
[r12971]