Changed the old reconnect mechanism to a more "aggressive" one. This keeps the server (and hopefully backlogs) open for those who might prefer active (timed) reconnect versus passive (response-based) or state-based reconnect. It's perfectly possible to put all three options together, and it should safely wait if there is no connection (e.g. the network has gone transient)
Move ColorScheme management into ColorSchemeManager

This does two things: I can now Inherit from ColorScheme and generate
some things, but it also begins to move the ColorScheme to a more abstract
and out-of-the-way idea.

ColorScheme shouldn't have to worry about the preferences changing. Why?
Why should it NEED to? It doesn't, and it shouldn't. This does exactly that,
moving that logic into the ColorSchemeManager.

This also allows me to "show" the color schemes later on, and possibly
use it for the color variety preview.