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

I have a page where I'm programatically running color() to update the color wheel based on HSB values.  But converting them to hex first means I lose resolution (e.g. a saturation of 0 always results in red on the hue wheel).  This merge extends the functionality by adding color_hsb(), which lets you update the wheel with a precise HSB object, or get the current HSB value.  Everything should be backwards compatible with the existing color() function.