Schedule Rewrite

This changes the architecture to have a Scheduler be hotloaded by the kernel, rather than all individual processes. This reduces the function pointer calls from 1 per process, per frame, to one at application start. (It hotloads and calls the scheduler, and the scheduler controls the main loop.) This not only increases performance, but also saves the developer from modifying the kernel if they want to change the main loop.

In doing this, it also became convenient to make schedules a macro, rather than text files. This shoves more error catching to the compiler.

Finally, compile scripts are now rust applications, generated by the os specific setup scripts, in tools/scripts/os_setup/, greatly increasing the portability of the custom build system.