Color in cesium is defined as 4 doubles from 0 to 1.  So The dirty details you mention are specific to KML, and therefore belong in KmlDataSource.