Subsystem restructuring. Please avoid merging stuff which would conflict with this. This took days to update.

some recent merges were lost due to entire conflicting files. I did ask nicely.
if processing_interval = 0 then we'd have while(1){sleep(0)}
This would cause a crash as the tick would never be able to finish

sleep(-1) would cause 100% cpu use

sleep(50) is just some arbitrarily high number.