Refactor handling of interruptions

Refactor the way interruptions are handled.

Interruptions are handled by a Context-global manager, to which components required to be interrupted can attach themselves to. The interruption manager provides both passive and active interrupts, via a flag "isInterrupted" and/or by implementing "Interruptible" and getting interrupt()'ed.

The test suite now implements a global test timeout of 2 minutes, which interrupts Leon via the interrupt manager.

By consequence, verification can be aborted "gracefully" via Ctrl+C now.