timeout added
Separated Serial processing into three threads: Sending, Receiving and Processing.
This way we don't need to poll all the time. instead we can rely on blocking functions. (Sending blocks on command_queue, Receiving on Serial.receive(), and processing on responses)
unique
ping after a delay and reset id's when starting (for debugging)
serial port 5
fixed bug, where serial read kept thread from stopping and program exiting.
sequence number is now sent encoded
various fixes
fixed division by zero when fps == 0
a lot of small adjustments and fixes (of timing)
timing refinements
Keep board from  being unavailable (setting pixels) when bus sequence number has not yet been received.