Add color_hsb() function to allow precise HSB/HSV setting

Signed-off-by: Ryan Finnie <ryan@finnie.org>