improved rgb_to_hsv and hsv_to_rgb in colors.py

functions now take anythang that can be coreced into a (..., 3) shaped ndarray

make documentation clear that the input must be in range [0, 1]

properly deal with integer (binary) input

added round-trip tests
eliminate side effects, fixed output shape
Merge pull request #2569 from tacaswell/fix_rgb_to_hsv_2566

Explicitly cast the input array to float before doing anything to it