Merge the Simple Linux Port so we can support Linux with our Rasware!

All bugs that once were have been fixed.
Has been tested in Ubuntu, Debian, Arch, and Windows.
Although it would be great for more people to test it.

Not supported in Mac currently as Mac does not use UDev. It is likely that finding a Mac equivalent of Putty would allow a fully functional Mac port.

The Startup.c file is completely compatible with Keil, allowing the same code to be used on both Windows and Linux. Currently the setup tries to match Keil's build behavior. The Makefile can also be edited easily for custom settings.

Uses arm-none-eabi cross compilers for compiling, the lm4flash utility for flashing, and screen for uart communication. These can be invoked through make with the flash and uart commands. When lm4flash is invoked, it automatically resets the board. It also supports debugging through openocd, however there is no explanation for how to do this in the repo.

Also fixes several tiny issues such as a race condition with the NMI and some unnecessary queuing done by the scheduler.

There may be more small issues, but since Rasware is currently not needed by anything right now, it would be nice to merge the linux port to master sooner than later so we can centralize any new changes.