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.
An array of <code>InterruptTracker * array[20]</code>'s would be much more performant. It would provide random access, which is not offered by a <code>std::map</code> (BST implementation), also it would be more space effective and remove the dependency on <code>&lt;map&gt;</code>. As a bonus, you could also test against <code>array[pin]</code> to see if an interrupt had been set.