Interrupt support

This change introduces simulated interrupt support. At this time the software stack does not support
hardware interrupts. This change simulates the interrupts by polling.
Consider instead:
#include <functional>
typedef std::function<void(void)> InterruptFunction;
benefit: This will allow you to use functors and lambda expressions (with state).