Property interfaces

Add abstract interfaces for color and string properties to allow for other implementations to be used in properties (e.g., QColor, QString)