Heavy rewrite.

Now handles target colors for RGB components correctly.

Uses select instead of polling different IO mechanisms.

Seperate serial/web IO into seperate threads.