Fixes and tweaks focused on "bad" colours

Black, White and Gray had same value as some colours, internally they
were compared with integers and thus those colours were muted as well.
GetColourType got tweaked. SCSwitchable code modified to account for the
enum changes. Utility refactored into ColourTools.