The matplotlib IO returns float arrays from [0, 1], which gives difference
results than a ubyte array. Explicitly convert to a ubyte array in the tests.
Sometimes zero divided by zero can occur in this code. Saturation was already
explicitly set to zero when 'delta' is zero. According to Wikipedia, hue is
undefined when 'delta' here is zero, so explicitly set to zero.
The plugin loader tries plugins but only catches ImportError and
RuntimeError. The FreeImage plugin was throwing OSError. Tests
were failing when FreeImage was not installed. It now throws a
RuntimeError.