Refactor color scheme related code
Currently, we have two functions that update the color scheme for a client - updateColorScheme(QString) and updateColorScheme(). Even though they both share the same name, they do different things. The first one sets the specified color scheme, while the other determines the color scheme preferred by the client and assigns it.
This change refactors the color scheme initialization code so we no longer need those two methods. The setColorScheme() method sets the specified color scheme, and the preferredColorScheme() method returns the color scheme preferred by the client. Sub-classes of AbstractClient can override the preferredColorScheme() method in order to add support for platform-specific color scheme protocols.
The end result: color scheme related code is a bit more comprehensible.