Change the 2D surface interface to include a color conversion function.

True color displays vary in terms of what colors they can support and
what color format they expect, so this new function provides a way to
abstract away these differences and let a caller operate on RGB values.

Of course this does come with a performance hit, so applications may wish
to either produce a color mapping table on startup or skip this interface
directly and work directly with the device's raw color values.