Sorry for the large commit...

Weird bug fix where cpu was executing without a process running for a
cycle due to moving context switches to an interrupt.

Also includes some refactoring and adding to schedulers