Cnc: Added framework for external control.

Also moved stuff out of io_thread. And renamed stuff.

And implemented support for intervals between sent characters.
Cnc: xon/xoff support
Cnc: added TinyG queue fullness tracking (qr)
Cnc.raw_gcode: added a function for sending raw gcode